更快地填充vba中的单元格

时间:2018-06-15 20:37:42

标签: vba excel-vba loops excel

我正在尝试使用vba填充200,000个单元格,并且需要花费5分钟来完成它。是否有更快的方式来填充细胞?代码如下所示

代码:

library(tidyverse)
out <- master %>% 
        pull(personalInfo) %>% 
        map_df(~ map_chr(.x, ~ replace(.x, is.null(.x), NA))) %>% 
        bind_cols(master %>%
               select(id), .)
str(out)
#'data.frame':  10 obs. of  3 variables:
# $ id   : num  1551 1033 1061 1262 1032 ...
# $ fname: chr  "Jack" "Yogesh" "Steven" "Richard" ...
# $ mname: chr  "B" NA "J" "I" ...

我想只是为了让你更容易,我试图填充AU列中的单元格从-10到10,每次更改0.001

2 个答案:

答案 0 :(得分:3)

加载数组,然后将数组分配给单元格。

Sub pre()

    Dim i As Long: i = 1
    Dim arr(1 To 200000, 1 To 1) As Variant
    Dim rex As Variant

    For rex = -10 To 10 Step 0.001
        arr(i, 1) = rex
        i = i + 1
    Next rex

    ActiveSheet.Cells(2, 47).Resize(200000).Value = arr
End Sub

从vba访问工作表会减慢代码速度。限制访问工作表的时间。

答案 1 :(得分:2)

这个在大约一秒钟内运行

我会在上面放一个计时器。

OP的代码在.4101563

中运行

以下代码在.3789063

中运行

Scotts代码可能是9/1000秒? 9.765625E-02

Sub Button1_Click()
    Dim rng As Range

    Set rng = Range("AU3:AU200000")
    Range("Au2").Value = -10

    rng.Formula = "=AU2+0.0001"
    rng.Value = rng.Value

End Sub