Anexar = a cada célula da coluna do Excel para forçar o cálculo da fração

Anexar = a cada célula da coluna do Excel para forçar o cálculo da fração

Tenho várias células do Excel no formato 22/7, 355/113, 3927/1250 e assim por diante.

Como acrescento = a cada célula para que o valor numérico real seja calculado?

Usando concatenação de texto conforme mostrado na pergunta:Insira texto no início de cada célula em uma colunanão funciona (o texto é adicionado).

Tentei alterar a formatação das células (numérica, científica, etc.) sem melhora.

Além disso, se A1 for 22/7, então fazer B1 =VALUE(A1) também não funciona, recebo #VALUE!

Então, como forçar o cálculo dos valores de cada célula?

Responder1

Digamos que temos dados como:

insira a descrição da imagem aqui

Executando esta pequena macro VBA:

Sub MakeEquation()
    Dim N As Long, i As Long

    N = Cells(Rows.Count, "A").End(xlUp).Row

    For i = 1 To N
        With Cells(i, 1)
            .Formula = "=(" & .Value & ")"
        End With
    Next i
End Sub

vai produzir:

insira a descrição da imagem aqui

Responder2

Se você souber usar o Powershell, poderá usá-lo para alterar o conteúdo da célula. Para valores nas células A1 a A3 na planilha1 em uma planilha do Excel chamada Exemplo.xlsx usando o seguinte script

$FilePath = 'C:\Users\Username\Documents\Example.xlsx'
# Instantiate the COM object
$Excel = New-Object -ComObject Excel.Application
$Workbook = $Excel.Workbooks.Open($FilePath)
$Sheet = $Excel.WorkSheets.item("sheet1")
$Sheet.activate()

$Sheet.Range('A1:A3').NumberFormat="" 

foreach ($Cell in $Sheet.Range('A1:A3').Cells) {
 $Cell.Value2 = '=' + $Cell.Value2
 }

$WorkBook.Save()
$WorkBook.Close()
$Excel.Quit()

Responder3

A seguinte função de planilha faz exatamente como você pediu:

=LEFT(A1,FIND("/",A1)-1)/RIGHT(A1,LENGTH(A1)-FIND("/";A1))

O que ele faz é encontrar a barra na fração e depois dividir a string na parte antes da barra e na parte atrás da barra. Em seguida, ele divide as duas partes para chegar a um decimal.

Responder4

O seguinte é semelhante ao primeiro no link dos comentários. Porém, é "mais limpo", pois a resposta dada então (2010) foi baseada em aspectos do Excel que não existem mais.

Presumo que você deseja substituir os dados pelos resultados calculados. Se sim, faça o seguinte, mas se não, faça com que os resultados acabem em outro lugar que seja conveniente.

Insira uma coluna auxiliar e insira a seguinte fórmula (em B1, digamos):

= "=" & A1

O Excel não faz mais a coisa abominável de considerar um 'caractere inicial como um caractere de formatação como 1-2-3 costumava fazer, mas não há necessidade de usá-lo de qualquer maneira, pois o Excel pode iniciar uma string de texto com "=". Então esta é a coisa mais simples que você pode fazer, na verdade.

Preencha ou copie/cole conforme necessário. Destaque todas as células da fórmula e copie. Em seguida, vá para a célula A1 e Paste|Special|Valuescoloque os RESULTADOS da fórmula acima (NÃO as fórmulas) "em cima" dos dados iniciais. Em seguida, exclua a coluna auxiliar. Agora você terá coisas como:

=22/7

com ele tratado como texto, mesmo que você altere o formato para um formato numérico.

Destaque tudo novamente (ou faça isso imediatamente após P|S|M e exclua a coluna auxiliar mais tarde) e use Find and Replacepara procurar por "=" e substitua por "="...

Sim, encontre o sinal de igual e substitua-o por ele mesmo. O Excel fica feliz em fazer isso e, ao contrário de muitas outras técnicas, não fica considerando isso como texto depois de fazê-lo. Se quiser saber sempre qual era o material original, deixe assim. Examinar a célula permite que você sempre veja esta, por exemplo, iniciada com "22/7" porque ainda está lá depois de "=". Se não precisar, destaque todos, copie-os e P|S|V mais uma vez para deixar apenas os resultados dos cálculos no lugar.

Tudo feito.

(Aliás, essa é uma daquelas situações (estranhamente, NUNCA falamos), não é comum, mas surge para nos surpreender, em que você não consegue Paste|Special|Multiplya saída da concatenação por 1 e vê tudo mudar para valores. permanecerá como "=22/7" e na borda esquerda da célula, como texto. Você teria que alterar manualmente cada um com F2-Enter.)

Dito tudo isso, uma pequena macro bonita é o “padrão ouro”. Rápido, fácil, você pode atribuí-lo a um botão para uso em novo material, está tudo bem. Contanto que você tenha permissão para usá-los. Mas isso parece uma tarefa doméstica para você, o criador da planilha, e não algo que os usuários fariam depois de criar a planilha. Então você pensaria que a maioria das organizações seria boa com isso. O aluno de Gary parece bastante simples. O de Antônio parece mais envolvente, mas também bastante direto.

E... para não causar problemas... mas você sempre pode adicionar uma macro para alguma tarefa doméstica como esta enquanto estiver com a planilha aberta, usá-la e excluí-la ou apenas salvá-la no formato .xlsx para Excel. tira a macro para você. Apenas dizendo'...

Pela pergunta vinculada à qual mencionei, EVALUATE()seria divertido de usar. Mas é mais problemático porque você precisa fazer várias coisas que são um pouco mais difíceis do que a abordagem acima.

Eu não recomendaria a abordagem "desmontar e montar novamente" que Michthan oferece simplesmente porque seus dados podem estar mais envolvidos do que literalmente tudo sendo dividido e usando a barra para mostrá-lo. Se assim for, agora ou no futuro, você terá que expandir o que essa fórmula procura para lidar com todas as situações possíveis. Nesta situação, talvez não seja o menor problema, mas se existe uma solução fácil que evita tudo isso, por que não usá-la? Dito isto, essa abordagem também funcionará e poderá ser necessária dependendo de como seus dados poderão ser entregues a você no futuro.

(E como essas respostas são para todos se beneficiarem, outra pessoa pode já ter um conjunto de dados mais complexo e achar essa abordagem útil, embora repleta de carga de trabalho para cobrir todas as bases.)

informação relacionada