Я пытаюсь заменить набор чисел 1, 2, 3, 4, 5 на обратный номер, как часть вычисления, которое необходимо сделать. 1 = 5, 2 = 4, 3 = 3, 4 = 2, 5 = 1.

Формула, которую я использую

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(F13,"2","4",1 ),"1", "5", 1 ),"4", "2", 1 ),"5", "1", 1 ),"2","4", 1)

Тем не менее, он работает только для чисел 2 и 5 и не заменяет 1 и 4.

2 ответа2

0

Напишите эту формулу массива в ячейке B2:

{=RIGHT(SUM(VALUE(MID(A2&"1",ROW(INDIRECT("1:"&LEN(A2&"1"))),1))*10^(ROW(INDIRECT("1:"&LEN(A2&"1")))-1)),LEN(A2))}

Обратите внимание, завершите формулу с помощью Ctrl+Shift+Enter .

Для списка номеров / текста, разделенных запятыми, скопируйте и вставьте указанный ниже код VBA в виде модуля с листом.

Function ReverseTxt(ByVal Target As Range)
    myLength = Len(Target.Value)
    For x = 0 To myLength
        ReverseTxt = Left(WorksheetFunction.Substitute(Target.Value, Left(Target.Value, x), ""), 1) & ReverseTxt
    Next x
End Function

Запишите UDF в ячейку B4 и заполните: =ReverseTxt(A2)

NB

  • Вышеуказанный UDF подходит для однозначного / символьного списка.
  • Если вы попробуете UDF для 12, 13 тогда будет 31, 21 и DA будет AD .
0

Это сделает замену на номера (без текста)

=SUMPRODUCT((6-MID(A1,ROW($A$1:INDEX(A:A,LEN(A1))),1))*10^(LEN(A1)-ROW($A$1:INDEX(A:A,LEN(A1)))))

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


Это становится немного сложнее со строками. мы можем использовать массивную версию CONCAT, которая была представлена в Office 365 Excel.

=CONCAT(IF(ISNUMBER(--MID(A1,ROW($A$1:INDEX(A:A,LEN(A1))),1)),6-MID(A1,ROW($A$1:INDEX(A:A,LEN(A1))),1),MID(A1,ROW($A$1:INDEX(A:A,LEN(A1))),1)))

Будучи формулой массива, она должна быть подтверждена Ctrl-Shift-Enter вместо Enter при выходе из режима редактирования.

Это также повторяет строку и, если это число, вычитается из 6 и помещается обратно в concat.


Если вы хотите продолжить использовать вложенные ЗАМЕНИТЕЛИ, то вам нужно заменить два числа на другое, прежде чем переключать два других. Затем переключите специальные символы на вывод желания.

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,1,"!"),2,"@"),4,2),5,1),"@",4),"!",5)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .