SUBSTITUTO FORMULA EXCEL - troca de números

0

Estou tentando substituir um conjunto de números 1,2,3,4,5 pelo número inverso como parte de um cálculo que precisa ser feito. 1 = 5, 2 = 4, 3 = 3, 4 = 2, 5 = 1.

A fórmula que estou usando é

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

No entanto, ele só funciona para números 2 e 5 e não está substituindo 1 e 4.

    
por Ryann 31.07.2018 / 21:39

2 respostas

0

Isso fará a substituição em números (sem texto)

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

Eleapenasiteraonúmerosubtraindocadapartede6paraobteronúmeroinvertidoe,emseguida,multiplica-oporumfatorde10paracolocarnaordemcorreta.

Issoficaumpoucomaiscomplicadocomstrings.podemosusarumaversãodematrizdoCONCAT,quefoiintroduzidanoOffice365Excel.

=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)))

Sendoumafórmuladematriz,eladeveserconfirmadacomCtrl-Shift-EnteremvezdeEnteraosairdomododeedição.

Issotambémiteraastringe,seforumnúmero,elasubtraide6eretornacomaconcat.

SevocêquisercontinuarcomosSUBSTITUTOSaninhados,precisaráalterardoisdosnúmerosparaoutracoisaantesdealternarosoutrosdois.Emseguida,mudeoscaracteresespeciaisparaoresultadodesejado.

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

    
por 31.07.2018 / 22:02
0

EscrevaestafórmuladematriznacélulaB2:

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

Observação: termine a fórmula com Ctrl+Shift+Enter .

Para uma lista de números / texto separados por vírgulas Copy & Cole o código VBA abaixo escrito como módulo com a planilha.

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

Escreva o UDF na célula B4 & preencha: =ReverseTxt(A2)

N.B.

  • Acima, a UDF é adequada para uma lista de dígitos únicos / caracteres.
  • Se você tentar o UDF para 12, 13 , então será 31, 21 & DA irá AD .
por 01.08.2018 / 10:08