返回列表 上一主題 發帖

[發問] 請問統計特定條件不重複之數量如何改以VBA執行

[發問] 請問統計特定條件不重複之數量如何改以VBA執行

本帖最後由 starry1314 於 2015-11-4 17:55 編輯

=IFERROR(SUMPRODUCT(1/COUNTIF(rng早,rng早)*(MMULT(ISNUMBER(FIND(MID(A$3,{1,2},1),rng早))*1,{1;1})=2))-A6,"")
此串函數 為統計 C欄內出現特定一樣條件之不重複數量  

=IFERROR(SUMPRODUCT(1/COUNTIF(rng早,rng早)*(MMULT(ISNUMBER(FIND(MID(B$3,{1,2},1),rng早))*1,{1;1})=2)),"")
此串函數 為統計 C欄內出現特定兩樣條件之不重複數量  

rng早=資料範圍(定義名稱)

1.主要是統計C列不重複數量後,再從裡面判斷如[A3]的值為H  只計算編號內有出現H之數量 後再扣除[A6]的數量
2.主要是統計C列不重複數量後,再從裡面判斷如[A3]的值為H  只計算編號內同時有出現H和V之數量

因資料眾多想請問如何改以陣列處理完後再輸出所要數量



VBA統計特定條件不重複數量.rar (7.91 KB)

如何更改為不重複次數呢
  1. Sub 統計特定條件個數()
  2. Dim arr, n&, i&, j&, hh$
  3. arr = Sheets("工作表1").Range("C2:C4000").Value
  4. For i = 1 To 3999
  5.        For j = 1 To Len(arr(i, 1))
  6.               hh = Mid(arr(i, 1), j, 1)
  7.               If hh Like "[H]"  Then n = n + 1
  8.        Next
  9. Next
  10. MsgBox n
  11. End Sub
複製代碼
另要如何加入同時有出現H和V的數量

  If hh Like "[H]" And hh Like "[V]" Then n = n + 1  
統計出來是0

TOP

請問如何改為統計不重複個數呢
  1. Sub 統計條件重複個數()
  2. Dim arr, n&, i&, j&, hh$
  3. arr = Sheets("工作表1").Range("C2:C4000").Value
  4. For i = 1 To 3999
  5.        For j = 1 To Len(arr(i, 1))
  6.               hh = Mid(arr(i, 1), j, 12)
  7.               If hh Like "*H*" And hh Like "*V*" Then n = n + 1
  8.        Next
  9. Next
  10. MsgBox n
  11. End Sub
複製代碼

TOP

Sub TEST()
Dim A, xD, T$(1), N&(1)
Set xD = CreateObject("Scripting.Dictionary")
T(0) = Mid([工作表2!b3], 1, 1)
T(1) = Mid([工作表2!b3], 2, 1)
For Each A In Range([工作表1!c2], [工作表1!c1].Cells(Rows.Count, 1).End(xlUp)).Value
  If A = "" Or xD(A) = 1 Then GoTo 101
  If InStr(A, T(0)) Then
    If InStr(A, T(1)) Then N(1) = N(1) + 1 Else N(0) = N(0) + 1
  End If
  xD(A) = 1
101: Next
[工作表2!A5] = N(0)
[工作表2!A6] = N(1)
End Sub

TOP

A5{=COUNT(1/(FIND(A3,工作表1!C2:C24)*ISERR(FIND("V",工作表1!C2:C24))*(COUNTIF(OFFSET(工作表1!C2,,,ROW(C1:C23)),工作表1!C2:C24)=1)))
A6{=COUNT(1/(COUNTIF(OFFSET(工作表1!C2,,,ROW(C1:C23)),工作表1!C2:C24)=1)*FIND(A3,工作表1!C2:C24)*FIND("V",工作表1!C2:C24))

TOP

回復 4# 准提部林

謝謝解決難題!!想破頭都搞不定

TOP

回復 5# hcm19522


    謝謝~因只想用VBA
我提供的函數原本已可出現我要的效果~但資料太多 計算太緩慢了

TOP

Sub TEST()
Dim A, xD, T$(1), N&(1)
Set xD = CreateObject("Scripting.Dictionary")
T(0) = Mid([工作表2!b3], 1, 1)
T(1) = Mid([工作表2!b3], 2, 1)
For Each A In Range([工作表1!c2], [工作表1!c1].Cells(Rows.Count, 1).End(xlUp)).Value
  If A = "" Or xD(A) = 1 Then GoTo 101
  If InStr(A, T(0)) Then
    If InStr(A, T(1)) Then N(1) = N(1) + 1 Else N(0) = N(0) + 1
  End If
  xD(A) = 1
101: Next
[工作表2!A5] = N(0)
[工作表2!A6] = N(1)
End Sub
准提部林 發表於 2015-11-4 18:52

版大您好 遇到個問題....如果抓出T(0)專屬單位的編號可以計算正確,
但因只有6個單位需單獨計算專屬的數量,可否只計算將6個單位以外的編號數量

TOP

回復 8# starry1314


請提出範例, 並模擬結果及說明規則~~

TOP

回復 9# 准提部林

已附上~謝謝
    VBA統計特定條件不重複數量.rar (15.21 KB)

TOP

        靜思自在 : 口說一句好話,如口出蓮花;口說一句壞話如口吐毒蛇。
返回列表 上一主題