我想对一组数据应用过滤器,之后我想将一系列数据填充到一系列单元格中。但是现在如果这样做,最后两行将获得第一个单元格的值。
-74.4398
-74.2028
-69.8689
-73.1567
-80.1015
-75.822
-75.0529
-75.9859
-79.2546
-72.8093
-71.6604
这是单元格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
如果现在按下按钮以便执行VBA代码,您将看到单元格C12和C13中的内容与单元格C3中的内容相同。
为什么会发生这种情况,为什么它没有用正确的内容填充单元格?
我预计细胞C12将是“terre”而C13将是“Final”。
这是一个excel问题/错误吗?
编辑:我认为这是更糟糕的,我现在使用了不同的过滤器值-74而且不仅最后的条目不正确,都是不正确的:
答案 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