【发布时间】:2020-03-01 14:04:25
【问题描述】:
真的会很高兴友好地推动正确的方向。
我正在尝试使用数组作为变量来使用基于 COUNTIFS 公式的值填充列,例如“单元格 - 将数组的新元素作为变量的公式”。 所以 AF2 - Brand2 的计数 AF3 - Brand3 的计数 .. 现在我只得到整个范围的数组最后一个元素的值(我可以看到 excel 如何遍历其余元素)。或多或少地尝试了我所知道的一切,并查看了早期的问题 - 无济于事。不胜感激。
Option Explicit
Sub Summa_po()
Dim Mesyaz1 As Date
Dim Mesyaz2 As Date
Dim Mesyaz3 As Date
Dim Brand()
Dim i As Long
Worksheets(1).Activate
Mesyaz1 = DateAdd("m", -1, Now)
Mesyaz2 = DateAdd("m", -2, Now)
Mesyaz3 = DateAdd("m", -3, Now)
Brand = Array("Brand1", "Brand2", "Brand3", "Brand4")
For i = LBound(Brand) To UBound(Brand) 'Here I tried also For i=0 to UBound(Brand)
With ActiveSheet.Range("AF:AF")
.Formula = "=COUNTIFS(C:C," & RTrim(Month(Mesyaz3)) & ",H:H,""Head"",F:F," & Chr(34) & Brand(i) & Chr(34) & ")"
.AutoFill Destination:=ActiveSheet.Range("AF2:AF55") 'I used to draw it to the last cell but it is not a problem appararently
End With
Next i
[AF1] = "Head"
End Sub
【问题讨论】:
-
但是,你的问题是什么?您收到错误消息吗?如果是,是什么错误以及在哪个代码行上。如果没有,您的代码会根据您的需要产生什么?
-
正如我所写的,该列正在由具有数组最后一个元素的公式填充。所以例如(C:C;12;H:H;"Head";F:F;"品牌 4")。品牌 1、品牌 2、品牌 3 未保存
-
一些示例数据会有所帮助。您正在将公式应用于整个列(这将需要一段时间 - 很肯定不是您想要的)并且您正在为 4 个品牌重复该过程。问题:您如何决定配方中应包含哪个品牌?
-
但是,这就是您的代码所做的。请在
End With之前加上Stop,并在代码停止时检查公式。您将看到它使用第二个数组元素(第一个必须使用 0),然后是第三个。之前的公式将被最后一次迭代所取代......你觉得这些公式看起来如何? -
如果您直接在 Excel(不是 vba)中手动执行,公式会是什么?像这样...
=COUNTIFS(C:C,12;H:H,"Head",F:F,"Brand1") + COUNTIFS(C:C,12,H:H,"Head",F:F,"Brand2") + COUNTIFS(C:C,12,H:H,"Head",F:F,"Brand3") + COUNTIFS(C:C,12,H:H,"Head",F:F,"Brand4")