изменить местами текст в выбранной ячейке — VBA

#vba #excel

#vba #excel

Вопрос:

Я новичок в VBA. У меня возникла некоторая проблема с изменением моих данных в VBA-Excel. Мои данные «3> 8, 6> 15, 26> 41 (все данные в разных ячейках)», которые я мог бы изменить «3> 8» на «8> 3» в соответствии с моим требованием, используя функцию reverse. Но я не смог поменять местами «6> 15» и «26> 41» на «15> 6» и «41> 26». Это будет «51> 6» и «14> 62», этот сбой, я хочу, чтобы было «15> 6» и «41> 26».

Reverse = StrReverse(обрезать (str))

Помогите мне решить мою проблему, пожалуйста, и поблагодарите за комментарий.

Комментарии:

1. Можете ли вы показать нам код, который вы используете?

2. это также можно сделать с помощью формулы Excel =Right(A1,Find(">",A1))amp;">"amp;Left(A1,Find(">",A1)-1)

3. Reverse делает то, что написано на tin, буквально. Excel не понимает, что вы считаете, что 15 — это число, он считывает 1 и 5, а затем меняет его на 51. Используйте метод @Slai, описанный выше.

Ответ №1:

Сначала вам нужно найти положение «>» в ячейке. для этого нужно взять содержимое ячейки, обработать его как строку и найти «>»

Это делается в позиции стрелки, начинающейся со строки. Это целочисленное значение позиции «>» в исходной строке

Затем используйте левую сторону, чтобы извлечь текст до «>», и правую, чтобы извлечь текст после «>»

Затем создайте новую строку rightstr amp; «>» amp; LeftStr.

Обратите внимание, что я ввожу свои данные с листа 1 B5, но вы можете просто использовать любой источник, если это строка в правильном формате.

 Sub Test()

Dim myString As String

myString = Sheets("Sheet1").Range("B5")
Debug.Print myString
Debug.Print reverseString(myString)

End Sub


Function reverseString(inputString As String) As String

Dim leftStr As String
Dim rightStr As String
Dim arrowPosition As Integer

arrowPosition = InStr(1, inputString, ">")
leftStr = Left(inputString, arrowPosition - 1)
rightStr = Right(inputString, Len(inputString) - arrowPosition)
reverseString = rightStr amp; ">" amp; leftStr

End Function
  

Ответ №2:

просто потому, что вы ищете VBA, вы можете добавить эту функцию в свой код:

 Function rev(t As String) As String
    s = Split(t, ">", 2)
    rev = s(1) amp; ">" amp; s(0)
End Function
  

конечно, только если вам нужно поменять местами число 2, иначе вы зациклите «s», но функция потеряет свою полезность