应用过滤器后Excel填充单元格范围

时间:2017-08-01 12:46:17

标签: excel filter range fill

我想对一组数据应用过滤器,之后我想将一系列数据填充到一系列单元格中。但是现在如果这样做,最后两行将获得第一个单元格的值。

-74.4398
-74.2028
-69.8689
-73.1567
-80.1015
-75.822
-75.0529
-75.9859
-79.2546
-72.8093
-71.6604

start

这是单元格B3到B13中的数字列表。一个按钮后面有以下VBA代码:

Private Sub CommandButton1_Click()

    Dim arr() As Variant
    Dim i As Integer

    ReDim arr(1 To 11, 1 To 1)

    arr(1, 1) = "Hallo"
    arr(2, 1) = "Welt"
    arr(3, 1) = "Holla"
    arr(4, 1) = "verdugón"
    arr(5, 1) = "Hello"
    arr(6, 1) = "World"
    arr(7, 1) = "Ciao"
    arr(8, 1) = "mondo"
    arr(9, 1) = "Salut"
    arr(10, 1) = "terre"
    arr(11, 1) = "Final"

    Worksheets("Sheet1").Range("C3:C13").Value = arr

End Sub

如果你现在在单元格C2上设置一个过滤器,只显示大于-75的所有值,你会得到一个这样的列表:

-74.4398
-74.2028
-69.8689
-73.1567
-72.8093
-71.6604

after filter

如果现在按下按钮以便执行VBA代码,您将看到单元格C12和C13中的内容与单元格C3中的内容相同。

fill range

为什么会发生这种情况,为什么它没有用正确的内容填充单元格?

我预计细胞C12将是“terre”而C13将是“Final”。

这是一个excel问题/错误吗?

编辑:我认为这是更糟糕的,我现在使用了不同的过滤器值-74而且不仅最后的条目不正确,都是不正确的:

new filter applied

2 个答案:

答案 0 :(得分:1)

我相信它确实是一个错误,它似乎已经存在了一段时间 - 请参阅此LINK

答案 1 :(得分:0)

乍一看,我会说这不是一个错误,而且更多的是阵列的本质,但我可能完全错了。如果您正在寻找可行的解决方案,我继续创建了这个:

Sub Button2_Click()
Dim sht As Worksheet, lastrow As Integer, arr() As Variant
Set sht = ThisWorkbook.Worksheets("Sheet1")
lastrow = sht.Cells(sht.Rows.Count, "B").End(xlUp).Row

arr = Array("Hallo", "Welt", "Holla", "verdugón", "Hello", "World", "Ciao", "mondo", "Salut", "terre", "Final")

For i = 3 To lastrow
    Range("C" & i).Value = arr(i - 3)
Next i
End Sub

Before & After