我有一个包含 15346 行的大型电子表格
我在 B2 中输入一个公式,并想将其复制到 B3:B15346。(我不想要 B2 中的值的副本,我想要每个单元格中的调整公式)
有没有办法从键盘输入范围,而不是通过鼠标或箭头/pgdown 向下滚动、错过目标、向上滚动等。
我只想输入“copy(B2,B3:B15346)”或类似内容。
我正在使用 libreoffice,但我希望存在一个通用的解决方案。
编辑:单元格 D2 的公式是=LOOKUP($B2;$'hex rgb'.$A$2:$B$24712)
那么 D3 应该是=LOOKUP($B3;$'hex rgb'.$A$2:$B$24712)
答案1
如果愿意的话,您可以通过“只需输入一些内容”来实现此目的,尽管这不是人们解决 Excel 问题的通常方法。
您可以键入以下内容以执行您的示例,或者根据需要针对其他单元格和范围进行编辑:
Range("b2").Copy : Range("b3:b15346").PasteSpecial
您在称为 VBA“立即窗口”的程序中输入该内容(它有很多用途,但在这里您将它用于您自己的目的)。
要找到它,您可以按Alt-F11
打开 VBA 编辑器并在屏幕上查找它。如果您没有看到它,请按Ctrl-G
打开它。
本质上,它是一种运行 VBA 命令的方法,无需更大的 VBA 环境即可运行。因此,您可以运行复杂的六个命令,包括声明一个或两个局部变量,但不能使用它从某个宏中获取变量。所以,简化了一些。
上面实际上是两个 VBA 命令(虽然精通 VBA 的人可能会笑着把它们合并成一个),您可以一次执行一个命令,也可以输入两行,然后返回每个命令并通过按每行来“逐步执行”它们Enter
。但是,如果您:
在单独的命令之间使用它,您可以将它们全部写在一行上,Enter
完成后只需按一次,即可让奇迹发生。
别担心,最后一点说.PasteSpecial
...在 VBA 中,它与“单元格端”的命令不同。它将粘贴公式,而不是值等。
多年来,在我第一次想学习 VBA 但一直没有时间之后,我保留了一个 Word 文档,其中包含上述方便的代码片段,这样我就可以做一些让公式人员烦恼的事情。(当时我的大部分工作都是使用自己的电子表格,而不是为用户编写它们,这样我就可以拥有用户永远不会容忍的手动方面。)
重点是,直到我读到 Philip Treacy 的提示,我才想到要用它来填充巨大的范围。(叹气……)这将是他这样做的实践的一种用途。
您可以使用“立即窗口”执行很多操作,即使使用(老板不允许的)电子表格也可以享受 VBA 带来的好处。(您实际上可以为此类电子表格编写一些宏,然后将其复制到 Word 文档中,并在下次使用电子表格时粘贴回去,而不必将其保存在它们中,但我发现随着时间的推移,我真的只像这样使用它们,一两行代码来做一些难以完成的基于公式的事情。)
当我在给定的电子表格中一直使用它们时,我会创建一个命名范围,然后在框中Refers to:
粘贴行,没有开头=
,只有行。Excel 巧妙地保存了它,添加了=
和一些双引号。自己输入这些,它拒绝了。去想想吧。然后当我需要它时,我不必打开另一个文档,只需转到名称管理器并在那里复制出公式,然后=
在粘贴到立即窗口后删除它和包装双引号,然后运行它。只花费阅读本段所用时间的十分之一。
但这是一种非常简单的方法(“老办法”,只需使用几次之后就不再令人担心),只需键入即可实现许多目标。
此外,通过 Google 查找执行任何特定操作的命令并不困难。通常如此。
答案2
由于您没有真正提到您的最终目标或具体公式,而只是说在 B 列中应用了一个公式,因此判断起来有点困难。但是,一种方法是使用公式化的方式。例如,如果您想将特定函数或公式(例如left
)应用于 A 列中的每一行,则可以使用以下方法:
=LEFT(INDEX($A:$A,2,1):INDEX($A:$A,COUNTA($A:$A),1),3)
此公式非常灵活,可创建从第二行开始直到您拥有的值为止的行数的相应数组,这由 控制counta
。如果您有缺失值,则必须小心一点,因为公式仅计算非空行。但您可以通过在其中一列中指定运行 ID 或通过指定公式中想要的行数来解决这个问题。当然,公式不依赖于函数left
,而只是作为一个例子,您也可以简单地将其插入到您自己的公式中:
=INDEX($A:$A,2,1):INDEX($A:$A,COUNTA($A:$A),1)
答案3
转到单元格 B15346。(无需滚动,只需在左上角 A1 附近的单元格地址框中输入“B15346”)
在单元格 B15346 中输入 =$B$2
Ctrl+C手机 B15346
然后(仍然选择单元格 B15346)按Ctrl+ Shift+ UpArrow(选择将到达 B1)
保持Ctrl+Shift按下状态,按DownArrow两次(选择将上升至 B3)。
(放开Ctrl+后Shift)n 按Ctrl+V
完毕
如果有效/无效,请分享。