返回列表 上一主題 發帖

[發問] 條件加總

[發問] 條件加總

未命名.png
2020-11-29 15:23

當AB1:BX1<>”",且有出現在$D$2:$Z$70時,則將該數字在C欄的次數加總,依序填入AB2:BX2。
EX : AB2=1,AC2=3,AD2=6,AE2=4,AF=2,……其餘類推。
請問︰AB2的Excel 2003版公式要如何編寫 ?
謝謝 !
PS : 因為計算範圍不固定,所以將計算範圍擴大預留。

條件加總.rar (4.62 KB)

回復 1# ziv976688


    AB2=COUNTIF($D:$Z,AB1)

TOP

本帖最後由 ziv976688 於 2020-11-30 09:17 編輯

回復 2# samwang
謝謝您的回覆,但您忽略了C欄的倍數。

我是因為$D$Z$70的各數字不一定是單一個,且C欄的對應各次數的對應數字也不是單一個 ,所以AB2符合需求的公式,我寫不出來 ^^"

TOP

本帖最後由 jcchiang 於 2020-11-30 13:12 編輯

回復 3# ziv976688

Sub ex()
Dim d As Object
Dim a, x%
Set d = CreateObject("Scripting.Dictionary")
For Each a In Range([c2], [c65535].End(3))
   For x = 1 To 20
      If a.Offset(, x).Value <> "" Then
         If Not d.exists(a.Offset(, x).Value) Then
            d(a.Offset(, x).Value) = a
         Else
            d(a.Offset(, x).Value) = d(a.Offset(, x).Value) + a
         End If
      Else: Exit For
      End If
   Next
Next
For Each a In Range("AB1:BU1")
   If d.exists(a.Value) Then a.Offset(1) = d(a.Value)
Next
Set d = Nothing
End Sub

TOP

回復 3# ziv976688

請再確認是否為您的需求,感謝。

Sub tt()
Dim Arr, xD, Drr, i&, j&, s%
Set xD = CreateObject("Scripting.Dictionary")
Arr = Range([Z1], [C65536].End(3))
For i = 2 To UBound(Arr)
    For j = 2 To UBound(Arr, 2)
        T = Arr(i, j)
        If T = "" Then GoTo 100
        xD(T) = xD(T) + Arr(i, 1)
100: Next
Next
Drr = Range([AB1], [AB1].End(2))
For j = 1 To UBound(Drr, 2)
    T1 = Drr(1, j)
    Drr(1, j) = xD(T1)
    s = s + 1
Next
Range("AB2").Resize(, s) = Drr
End Sub

TOP

回復 4# jcchiang
J大:
測試OK
非常感謝您的幫忙

TOP

回復 5# samwang
S大:
測試OK
非常感謝您的幫忙

TOP

本帖最後由 hcm19522 於 2020-11-30 14:57 編輯

=SUMPRODUCT(MMULT(N(AB1=$D2:$Z70),ROW(1:23)^0)*(0&$C2:$C70))
隨意窩 "EXCEL迷"  blog  或https://blog.xuite.net/hcm19522/twblog
已收集8500篇 EXCEL函數

TOP

回復 8# hcm19522
h大:
測試OK
再次謝謝您的耐心幫忙~感恩

請問 :   ROW(1:23)^0 是指什麼範圍?
懇請賜教。謝謝您!

TOP

回復 8# hcm19522
h大:
按F9後,已瞭解 ROW(1:23)^0  的意涵範圍了~謝謝您

TOP

        靜思自在 : 【時間如鑽石】時間對一個有智慧的人而言,就如鑽石般珍貴;但對愚人來說,卻像是一把泥土,一點價值也沒有。
返回列表 上一主題