将一个公式应用于所有选定的单元格

将一个公式应用于所有选定的单元格

那么在 Excel 2013 (v15.x) 中,是否仍然没有一步到位的方法将任意公式应用于所有选定的单元格,还是我只是错过了它?我在搜索中看到的最接近的内容是这个问题的答案:

如何将函数应用于选定单元格中的所有值?

...在其中选择一个单元格中的数字,然后将其选择性粘贴到新的单元格范围中,并在选择性粘贴内选择“加”、“减”、“乘”或“除”。

但我经常需要一个复杂的公式,其中唯一的变量可能是单元格本身。一个应用是准备一个接收到的工作表以导入到 SQL 或其他上下文中。

因此,要修改 A 列中的单元格范围(例如,交换每个单元格中的第一个/最后一个单词并替换标点符号),我执行以下所有步骤:

  1. 在 A 列旁边插入新的 B 列。(或者在工作表现有的空白区域中操作。)

  2. 例如,将我的公式放在 B1 中并引用 A1。

  3. 根据需要将公式拖至 B 列下方进行填充,并验证结果是否符合预期。

  4. Ctrl-C 选择 B 中现已突出显示的范围。

  5. 右键单击 A 中相应范围的第一个单元格。

  6. 选择选择性粘贴 > 值并验证结果。

  7. 删除 B 列(或我使用的任何中间范围)。

当然,数字 7 具有几个历史上备受推崇的神奇属性,但我一直认为,在 2015 年,在市场领先的电子表格中,这不可能是做我经常需要的事情的正确或最简单的方法。其他人不是吗?我已经必须是忽略了一条除了我之外所有人都知道的捷径。

如果它只是一个简单的内置函数(如 UPPER())怎么办?有没有办法在不创建中间副本或宏的情况下对选择进行此操作?

如果是不是只是我,是否有任何像 LibreCalc 这样的替代方案提供了直接的捷径?

编辑时:在看到一个答案后重新阅读我的问题,我怀疑我没有足够清楚地说明将公式应用于单元格 A14(其中许多)的目的是计算从 A14 的原始值派生出的 A14 的新值,并在单元格中仅留下一个值(而不是公式)。例如,每个单元格的值可能变成价值&"-obs" 即(“ABC”变成“ABC-obs”)或比这更复杂的东西。但我猜问题的本质是处理对 1 次迭代的有意自引用,存储公式的值而不是公式本身。

答案1

如果已经选择了单元格,则只需按CTRL+ 。如果忘记了,ENTER也可以在按下后拖动单元格右下角的方块。ENTER

此外,在指定单元格时。如果您$在列、行或两者前面放置 ,则列或行将对所有项目保持不变。如果不是,则该行或列将相对于当前单元格中的值。例如,如果您已选择 并在公式中A1:C4输入并按+ ,则相应的单元格将使用 中的值。如果您使用 ,则所有单元格都将使用 中的值。=D1A1CTRLENTERD1:F4=$D$1D1

更新

我知道唯一不使用中间值就能完成你想要做的事情的方法是使用 VBA。你想要的基本功能很简单。它看起来像这样:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Intersect(Target, Range("A1:C100")) Is Nothing Then Exit Sub
    Application.EnableEvents = False
    Target = UCase(Target)
    Application.EnableEvents = True
End Sub

只需将该行替换Target = UCase(Target)为您想要执行的操作即可。

相关内容