Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 将公式应用于大范围_Excel_Vba - Fatal编程技术网

Excel 将公式应用于大范围

Excel 将公式应用于大范围,excel,vba,Excel,Vba,我有一个大范围(高达60k行),我想应用公式了 循环将花费太长时间。该公式将应用于行上的信息,因此不会完全相同,但行将是唯一的变量 最好的方法是什么?我想我会使用VBA而不是Excel来确保电子表格不会变得太麻烦。下面是一个简单的方法来做你想做的事情。如果公式更新时间过长,最好使用VBA计算结果并将结果输出到范围 假设您希望公式=索引($M:$M,匹配(A2,$N:$N,0),0)位于D2:D60000行中 一,。打开宏录制器 二,。启用“使用相对引用” iii.在单个单元格中输入所需的公式(

我有一个大范围(高达60k行),我想应用公式了

循环将花费太长时间。该公式将应用于行上的信息,因此不会完全相同,但行将是唯一的变量


最好的方法是什么?我想我会使用VBA而不是Excel来确保电子表格不会变得太麻烦。

下面是一个简单的方法来做你想做的事情。如果公式更新时间过长,最好使用VBA计算结果并将结果输出到范围

假设您希望公式
=索引($M:$M,匹配(A2,$N:$N,0),0)
位于D2:D60000行中

一,。打开宏录制器

二,。启用“使用相对引用”

iii.在单个单元格中输入所需的公式(确保如果向下拖动,则所有行都正确)

iv.关闭宏记录器

五,。在VB编辑器中找到记录的公式-例如

ActiveCell.FormulaR1C1 = "=INDEX(C13,MATCH(RC[-5],C14,0),0)"
vi.使用以下公式将公式应用于所需范围:

Sheet1.range("D2:D60000").FormulaR1C1 = "=INDEX(C13,MATCH(RC[-5],C14,0),0)"

下面是一个简单的方法来做你想做的。如果公式更新时间过长,最好使用VBA计算结果并将结果输出到范围

假设您希望公式
=索引($M:$M,匹配(A2,$N:$N,0),0)
位于D2:D60000行中

一,。打开宏录制器

二,。启用“使用相对引用”

iii.在单个单元格中输入所需的公式(确保如果向下拖动,则所有行都正确)

iv.关闭宏记录器

五,。在VB编辑器中找到记录的公式-例如

ActiveCell.FormulaR1C1 = "=INDEX(C13,MATCH(RC[-5],C14,0),0)"
vi.使用以下公式将公式应用于所需范围:

Sheet1.range("D2:D60000").FormulaR1C1 = "=INDEX(C13,MATCH(RC[-5],C14,0),0)"

公式将应用于行上的信息,因此不会完全相同
——这意味着公式完全相同。请给出第1行和第2行公式的示例。如果您在VBA中执行此操作,我建议您仅使用VBA计算公式,并仅将结果写入工作表。除非您需要在单元格中维护公式,否则如果您这样做,它将运行得更快,并且不太容易“中断”。我只是想,如果我让vba粘贴答案,那么它将保存在excel上的公式上。鉴于这张纸有50000行,我想这可能是个好主意。这是我想要的公式=SUMIFS($J$2:$J$50000,$C$2:$C$50000,C2,$E$2:$E$50000,E2,$F$2:$F$50000,F2,$A$2:$A$50000,K2)的值
公式将应用于行中的信息,因此不会完全相同
——这意味着公式完全相同。请给出第1行和第2行公式的示例。如果您在VBA中执行此操作,我建议您仅使用VBA计算公式,并仅将结果写入工作表。除非您需要在单元格中维护公式,否则如果您这样做,它将运行得更快,并且不太容易“中断”。我只是想,如果我让vba粘贴答案,那么它将保存在excel上的公式上。鉴于这张纸有50000行,我想这可能是个好主意。这是我希望得到的公式=SUMIFS($J$2:$J$50000,$C$2:$C$50000,C2,$E$2:$E$50000,E2,$F$2:$F$50000,F2,$A$2:$A$50000,K2)的值。啊,我忘记了在记录宏时一直使用的相关引用,而不是尝试编写它们!事实上,这是一个总数,如果是这样的话,可能需要在公式上更聪明一点,但一旦记录下来,就可以玩一玩了。谢谢。更新-我已经设法将公式输入到单元格中,只是不清楚如何仅获取值。我想如果我使用rngcopy.value=“=if(RC[-10]=”,“”,if(工作日(RC[-10])=2,RC[-10]-3,if(工作日(RC[-10])2,RC[-10]-1))”可以,但它给出的是公式,而不是值。您可以使用cell.Text属性来获取单元格文本。啊,我忘记了相对引用。我过去一直使用它记录宏,而不是尝试编写宏!事实上,这是一个总数,如果是这样的话,可能需要在公式上更聪明一点,但一旦记录下来,就可以玩一玩了。谢谢。更新-我已经设法将公式输入到单元格中,只是不清楚如何仅获取值。我想如果我使用rngcopy.value=“=if(RC[-10]=”,“”,if(WEEKDAY(RC[-10])=2,RC[-10]-3,if(WEEKDAY(RC[-10])2,RC[-10]-1))”可以工作,但它给出了公式而不是值。您可以使用cell.Text属性来获取单元格文本。