Transferir um dígito para uma célula no Excel

0

Estou tentando transferir um dígito de um número para uma célula de uma pasta de trabalho para outra.

Exemplo:

Worksheet 1: 1,234.56
Worksheet 2: A1  A2  A3  A4  A5  A6
             1   2   3   4   5   6

Estas são as fórmulas que tenho usado, mas a última fórmula para o último dígito não está correta.

Fórmula A1: isso funciona

=IF('Worksheet 1'!D7>9999999.99,MID('Worksheet 1'!D7,7,1),
    IF('Worksheet 1'!D7>999999.99,MID('Worksheet 1'!D7,6,1),
       IF('Worksheet 1'!D7>99999.99,MID('Worksheet 1'!D7,5,1),
          IF('Worksheet 1'!D7>9999.99,MID('Worksheet 1'!D7,4,1),
             IF('Worksheet 1'!D7>999.99,MID('Worksheet 1'!D7,3,1),
                IF('Worksheet 1'!D7>99.99,MID('Worksheet 1'!D7,2,1),
                   IF('Worksheet 1'!D7>9.99,MID('Worksheet 1'!D7,1,1),"")))))))

Célula A6: isso não funciona:

=IF(MID(RIGHT('Worksheet 1'!D7,2),1,1)=".",MID(RIGHT('Worksheet 1'!D7,2),1,1),
    IF(MID(RIGHT('Worksheet 1'!D7,2),1,2)=".",RIGHT('Worksheet 1'!D7,1),"0"))
    
por Cmpmd2 29.06.2016 / 22:12

1 resposta

0

Não tenho certeza se entendi por que você tem uma fórmula if-else tão grande e como você a usa em cada célula (A1, A2, etc.).

Então, por que não usar uma fórmula mais simples para cada dígito que você deseja remover?

Algo como o seguinte deve funcionar para você:

Para cada célula na coluna SAME, começando em ROW 1, use a seguinte fórmula:

=LEFT(MOD('Worksheet 1'!$D$7,POWER(10,9-ROW()))/POWER(10,9-ROW()-1))

i.e. é a mesma fórmula para todas as células na mesma coluna, portanto, você pode apenas preencher.

Algumas explicações:

POWER(10,9-ROW()) está calculando um divisor, baseado em potências de 10.

O poder 9-ROW() dará 8, 7, 6, 5, ..., ao descer a coluna, SE você começar na linha 1, é claro.

Portanto, à medida que você desce a coluna, você divide por potências sucessivamente menores de 10, para extrair o dígito nessa posição decimal.

..

Para começar em uma linha diferente de 1, ou para extrair dígitos começando em posições diferentes de 10.000.000s, basta alterar o 9 para que X -ROW() forneça a primeira potência de dez que você deseja iniciar em .

..

Note também que, em vez de " LEFT " no item acima, você poderia usar " ROUNDDOWN " para zero casas decimais (ou seja, algo assim: ROUNDDOWN(MOD.../POWER..., 0) .

    
por 30.06.2016 / 16:42