Anteponga = a cada celda de la columna de Excel para forzar el cálculo de fracciones

Anteponga = a cada celda de la columna de Excel para forzar el cálculo de fracciones

Tengo varias celdas de Excel en formato 22/7, 355/113, 3927/1250, etc.

¿Cómo antepongo = a cada celda para que se calcule el valor numérico real?

Usando concatenación de texto como se muestra en la pregunta:Insertar texto al principio de cada celda en una columnano funciona (se agrega texto).

Intenté cambiar el formato de las celdas (numérico, científico, etc.) sin ninguna mejora.

Además, si A1 es 22/7, hacer B1 = VALOR (A1) tampoco funciona, ¡obtengo #VALOR!

Entonces, ¿cómo forzar el cálculo de los valores de cada celda?

Respuesta1

Digamos que tenemos datos como:

ingrese la descripción de la imagen aquí

Ejecutando esta breve macro de 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

Producirá:

ingrese la descripción de la imagen aquí

Respuesta2

Si sabe cómo usar Powershell, podría usarlo para cambiar el contenido de la celda. Para valores en las celdas A1 a A3 en la hoja 1 en una hoja de cálculo de Excel llamada Ejemplo.xlsx usando el siguiente 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()

Respuesta3

La siguiente función de hoja de trabajo hace exactamente lo que usted pidió:

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

Lo que hace es encontrar la barra en la fracción y luego dividir la cadena en la parte antes de la barra y la parte detrás de la barra. Luego divide ambas partes para llegar a un decimal.

Respuesta4

El siguiente es similar al primero en el enlace de los comentarios. Sin embargo, es más "limpio" porque la respuesta dada entonces (2010) se basó en aspectos de Excel que ya no existen.

Supongo que desea reemplazar los datos con los resultados calculados. Si es así, haga lo siguiente, pero si no, haga que los resultados terminen en otro lugar que sea conveniente.

Inserte una columna auxiliar e ingrese la siguiente fórmula (en B1, por ejemplo):

= "=" & A1

Excel ya no hace la abominable cosa de considerar un 'carácter inicial como un carácter de formato como solía hacer 1-2-3, pero no es necesario usarlo de todos modos ya que Excel está bien comenzando una cadena de texto con "=". Así que esto es lo más sencillo que puedes hacer, de verdad.

Complete o copie/pegue según sea necesario. Resalte todas las celdas de la fórmula y cópielas. Luego vaya a la celda A1 y Paste|Special|Valuescoloque los RESULTADOS de la fórmula anterior (NO las fórmulas) "encima" de los datos iniciales. Luego elimine la columna auxiliar. Ahora tendrás cosas como:

=22/7

tratándolo como texto aunque cambie el formato a un formato numérico.

Resáltelo todo nuevamente (o haga esto inmediatamente después de P|S|M y elimine la columna auxiliar más tarde) y use Find and Replacepara buscar "=" y reemplazarlo con "="...

Sí, encuentra el signo igual y reemplázalo por sí mismo. Excel está feliz de hacerlo y, A diferencia de muchas otras técnicas, no sigue considerándolo como texto después de hacerlo. Si quieres saber siempre cuál fue el material original, déjalo así. Examinar la celda le permite ver siempre ésta, por ejemplo, que comenzó con "22/7" porque todavía está allí después de "=". Si no lo necesita, resáltelos todos, cópielos y haga P|S|V una vez más para dejar solo los resultados de los cálculos en su lugar.

Todo listo.

(Por cierto, esta es una de esas situaciones (curiosamente, NUNCA se ha hablado), no es común, pero surgen para sorprendernos, en las que no se puede Paste|Special|Multiplygenerar la concatenación por 1 y ver cómo todo cambia a valores. permanecerá como "=22/7" y en el borde izquierdo de la celda como texto. Tendría que cambiar cada uno manualmente con F2-Enter.)

Dicho todo esto, una pequeña y agradable macro es el "estándar de oro". Rápido, fácil, puedes asignarlo a un botón para usarlo en material nuevo, todo está bien. Siempre y cuando se le permita usarlos. Pero esto parece una tarea doméstica para usted, el creador de la hoja de cálculo, no algo que los usuarios harían después de crear la hoja de cálculo. Entonces uno pensaría que a la mayoría de las organizaciones les vendría bien eso. El estudiante de Gary parece bastante sencillo. El de Antonio parece más complicado, pero también parece bastante sencillo.

Y... no quiero meterte en problemas... pero siempre puedes agregar una macro para alguna tarea doméstica como esta mientras tienes la hoja de cálculo abierta, usarla, luego eliminarla o simplemente guardarla en formato .xlsx para Excel. elimina la macro por ti. Sólo digo'...

Según la pregunta vinculada a la que aludí, EVALUATE()sería divertido de usar. Pero es más problemático ya que tienes que hacer varias cosas que son un poco más difíciles que el enfoque anterior.

No recomendaría el enfoque de "desgarrarlo y volver a armarlo" que ofrece Michthan simplemente porque sus datos podrían ser más complicados que, literalmente, todo lo que se divide y se usa la barra diagonal para mostrarlo. Si es así, ahora o en el futuro, tendrá que ampliar lo que busca esa fórmula para manejar todas las situaciones posibles. En esta situación, tal vez no sea el menor problema, pero si existe una solución fácil que evite todo eso, ¿por qué no utilizarla? Dicho esto, ese enfoque también funcionará y podría ser necesario dependiendo de cómo se le entregarán sus datos en el futuro.

(Y dado que estas respuestas son para que todos se beneficien, es posible que alguien más ya tenga un conjunto de datos más complejo y encuentre ese enfoque útil, aunque lleno de carga de trabajo para cubrir todas las bases).

información relacionada