Eu recomendaria:
- Extrair valor após
$
assinar, não usar posição fixa
- Verifique o sinal de valor marcando um símbolo imediatamente antes de
$
sign.
Então a fórmula pode ser
=IF(IF(ISERROR(FIND(MID(A1,FIND("$",A1)-1,1),"<dash><hyphen>")),3,FIND(MID(A1,FIND("$",A1)-1,1),"<dash><hyphen>"))<3,-MID(A1,FIND("$",A1)+1,LEN(A1)),0+MID(A1,FIND("$",A1)+1,LEN(A1)))
onde
"<dash><hyphen>"
- um literal com possíveis sinais negativos (substitua placeholders por caracteres corretos em qualquer ordem, para obter o literal de 2 símbolos no caso mostrado)
3
- o número que é maior que o número de caracteres no literal anterior
Esses valores podem ser substituídos por uma referência a uma célula que contenha todos os sinais "menos" possíveis (como Z1
e 1+LENGTH(Z1)
, respectivamente).
Atualizar. Depurando a fórmula.
Crie uma tabela em uma planilha vazia.
Insira 4 valores diferentes na coluna A (sem / com espaços à esquerda, positivo / negativo).
Insira as fórmulas abaixo:
Cell Formula Meaning
-------------------------------------------------------------
$B$1 =IF(I1,-G1,0+G1) Result
$C$1 =LEN(A1) Data length in source
$D$1 =FIND("$",A1) $ position in source
$E$1 =MID(A1,D1-1,1) symbol before $
$F$1 =FIND(E1,"<dash><hyphen>") symbol before $ position in hyphens list
$G$1 =MID(A1,D1+1,C1) number from source
$H$1 =ISERROR(F1) correction when no symbol before $ in list
$I$1 =IF(H1,3,F1)<3 define is a source positive or negative
Copie este pacote de fórmulas para as linhas 2-4. Verifique se você obtém a saída assim:
A B C D E F G H I
1 $123 123 4 1 #VAL! #VAL! 123 TRUE FALSE
2 -$234 -234 5 2 - 1 234 FALSE TRUE
3 $345 345 6 3 #VAL! 345 TRUE FALSE
4 -$456 -456 7 4 - 1 456 FALSE TRUE
Colunas C-I contém etapas de cálculo únicas e a coluna B contém a fórmula final com todas as substituições.
Onde há falha no cálculo?