将 = 添加到 Excel 列中的每个单元格以强制计算分数

将 = 添加到 Excel 列中的每个单元格以强制计算分数

我有多个 Excel 单元格,格式为 22/7、355/113、3927/1250 等等。

如何在每个单元格前面添加 = 以便计算实际的数值?

使用文本连接,如问题所示:将文本插入到列中每个单元格的开头不起作用(已添加文本)。

我尝试更改单元格格式(数字、科学等),但没有任何改善。

另外,如果 A1 是 22/7,那么使 B1 =VALUE(A1) 也不起作用,我得到 #VALUE!

那么如何强制计算每个单元格的值?

答案1

假设我们有如下数据:

在此处输入图片描述

运行这个简短的 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

将产生:

在此处输入图片描述

答案2

如果你知道如何使用 Powershell,你可以使用它来更改单元格内容。对于名为 Example.xlsx 的 Excel 电子表格中 Sheet1 上单元格 A1 至 A3 中的值,请使用以下脚本

$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()

答案3

以下工作表函数完全按照您的要求执行:

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

它的作用是找到分数中的斜线,然后将字符串拆分为斜线前的部分和斜线后的部分。然后它将这两个部分相除,这样就得到了小数。

答案4

以下内容与评论链接中的第一个类似。但它更“干净”,因为当时(2010 年)给出的答案基于 Excel 中不再存在的方面。

我假设您希望用计算结果替换数据。如果是这样,请执行以下操作,但如果不是,请将结果放在其他方便的地方。

插入一个辅助列并输入以下公式(例如在 B1 中):

= "=" & A1

Excel 不再像以前那样将前导字符视为格式字符,这很可恶',但无论如何也没有必要使用它,因为 Excel 可以以“=”开头文本字符串。所以这确实是你能做的最简单的事情。

根据需要填写或复制/粘贴。突出显示所有公式单元格并复制。然后转到单元格 A1,Paste|Special|Values将上述公式的结果(不是公式)“放在”起始数据“之上”。然后删除辅助列。您现在将获得以下内容:

=22/7

即使您将格式更改为数字格式,它仍会被视为文本。

再次突出显示所有内容(或在 P|S|M 之后立即执行此操作并稍后删除辅助列)并使用Find and Replace搜索“=”并将其替换为“=”...

是的,找到等号并将其替换为自身。Excel 很乐意这样做,而且与许多其他技术不同,它在执行此操作后不会继续将其视为文本。如果您想始终知道原始材料是什么,请将其保留原样。检查单元格可以让您始终看到这个,例如,以“22/7”开头,因为它仍然在“=”之后。如果您不需要它,请突出显示它们,复制它们,然后再次 P|S|V,只保留计算结果。

全做完了。

(顺便说一句,这是那些情况之一(奇怪的是,从未谈论过),并不常见,但它们突然出现让我们感到惊讶,在这种情况下,您无法将Paste|Special|Multiply连接的输出乘以 1 并看到它全部更改为值。它将保留为“=22/7”并像文本一样位于单元格的左边缘。您必须手动更改每一个F2-Enter。)

综上所述,一个好的小宏是“黄金标准”。快速、简单,您可以将其分配给按钮以用于新材料,这一切都很好。只要您被允许使用它们。但这看起来像是电子表格创建者的家务,而不是用户在您构建电子表格后会做的事情。所以你会认为大多数组织都会对此感到满意。Gary's Student 看起来非常简单。Antony 的看起来更复杂,但似乎也很简单。

而且……不是要给你找麻烦……但是你总是可以在打开电子表格时添加宏来完成一些类似的日常工作,使用它,然后删除它,或者只是以 .xlsx 格式保存,这样 Excel 就会为你删除宏。只是说说而已……

从我提到的链接问题来看,EVALUATE()使用起来会很有趣。但它更麻烦,因为你必须做几件比上述方法稍微难一点的事情。

我不推荐 Michthan 给出的“拆开再拼凑”方法,因为你的数据可能比逐字逐句地分开并使用正斜杠来显示更复杂。如果是这样,现在或将来,你会发现自己必须扩展该公式寻找的内容来处理所有可能的情况。在这种情况下,也许不是最小的问题,但如果存在一种避免这些问题的简单解决方案,为什么不使用它呢。也就是说,这种方法也有效,并且可能是必要的,具体取决于你的数据将来如何传递给你。

(并且由于这些答案是为了让所有人都能受益,所以其他人可能已经拥有更复杂的数据集,并发现这种方法很有用,尽管要涵盖所有基础需要很大的工作量。)

相关内容