Converte uma cadeia de texto com um traço principal para um número negativo

2

O corretor on-line que eu uso deve ter o site mais disfuncional do mundo! Eles não fornecem nenhuma função de "exportação", informando aos usuários que eles podem copiar dados de tabelas renderizadas em seus navegadores e colá-los no Excel. (Realmente!)

Surpreendentemente, o Excel (2016, para Mac) pode ser utilizado para converter os "números de texto positivos" em números reais que podem ser operados pelas funções numéricas ( SUM normalmente). No entanto, os "números de texto negativo" desafiaram todos os esforços que encontrei para serem convertidos em um número negativo.

Um "número de texto positivo" é: $ 123,45
Um "número de texto negativo" é: - $ 543,21 (observe o texto principal, caractere hyphen )

EDIT:
A "negative text number" is: – $299.55 (Discovered that leading character is NOT a hyphen; it may be an em dash
My apologies for the confusion... I'm now wondering what sort of programmers might use an em dash instead of a minus sign/hyphen in a web page full of numbers, but that's a question for my online broker.

Consigo converter um "número de texto positivo" na célula A1 da seguinte forma: =VALUE(RIGHT(A1,6))

Mas isso não funciona em um "número de texto negativo". Obtém o número correto, mas perde o sinal negativo. Eu tentei alterar o valor chars , mas isso não ajuda.

Eu também tentei o seguinte sem sucesso:
1. multiplicando por 1
2. texto para colunas
3. formatar células ...

Existe uma maneira de fazer isso - diferente de reinserir manualmente?

    
por Seamus 22.08.2018 / 04:11

2 respostas

1

Se a célula A1 contiver texto que esteja no formato "$ 123,45" ou "- $ 543,21", você poderá usar a seguinte fórmula para obter o valor numérico.

=IF(LEFT(A1,1)="-",0-VALUE(RIGHT(A1,LEN(A1)-1)),VALUE(A1))

Se o texto começar com um "-", isto irá obter o valor de tudo após o "-" e torná-lo negativo.

    
por 22.08.2018 / 04:32
0

Eu recomendaria:

  1. Extrair valor após $ assinar, não usar posição fixa
  2. 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?

    
por 22.08.2018 / 07:31