返回列表 上一主題 發帖

如何判斷為同一組(進階問題)

回復 1# s7659109

我先描述一下你的問題,
你看一下是不是這樣?

先以A欄與B欄的資訊做分組,
若組內D欄出現兩種以上的資訊就Highlight?

TOP

回復 4# naruto018


    最後面決定格式化可以直接判斷G欄是否為"x"

TOP

回復 6# s7659109

我VBA是承續之前的Code,
請參考
0801.zip (18.47 KB)
  1. Sub NumberCode()
  2.     Dim i%, Str$, ArrStr$
  3.     i = 2
  4.     ArrStr = "" '清空已記錄到的條件
  5.     Do Until Range("C" & i) = ""
  6.         '將A欄、B欄、D欄合併為一個字串作為條件
  7.         Str = Range("A" & i) & Range("B" & i)
  8.         '若該條件未記錄過,則記錄之。
  9.         If InStr("," & ArrStr & ",", "," & Str & ",") = 0 Then ArrStr = ArrStr & "," & Str
  10.         '撈出Str在陣列ArrStr中的索引值
  11.         Range("F" & i) = "No. " & UBound(Split(Split(ArrStr, Str)(0), ","))
  12.         i = i + 1
  13.     Loop
  14.     ConsistentJudgment ArrStr, UBound(Split(ArrStr, ","))
  15. End Sub

  16. Sub ConsistentJudgment(ArrStr, R%)
  17.     Dim i%, Str$, N%, StrMeno$
  18.     ReDim ArrMemo(R) As String
  19.     '紀錄Memo資料種類
  20.     i = 2
  21.     Do Until Range("C" & i) = ""
  22.         Str = Range("A" & i) & Range("B" & i)
  23.         StrMeno = Range("D" & i)
  24.         N = UBound(Split(Split(ArrStr, Str)(0), ","))
  25.         If InStr("," & ArrMemo(N) & ",", "," & StrMeno$ & ",") = 0 Then ArrMemo(N) = ArrMemo(N) & "," & StrMeno
  26.         i = i + 1
  27.     Loop
  28.     '回饋判定結果
  29.     i = 2
  30.     Do Until Range("C" & i) = ""
  31.         Str = Range("A" & i) & Range("B" & i)
  32.         StrMeno = Range("D" & i)
  33.         N = UBound(Split(Split(ArrStr, Str)(0), ","))
  34.         If UBound(Split(ArrMemo(N), ",")) > 1 Then Range("G" & i) = "x"
  35.         i = i + 1
  36.     Loop
  37. End Sub
複製代碼

TOP

        靜思自在 : 【蒙蔽的自由】人常在什麼都可以自由自在的時候,卻被這種隨心所欲的自由蒙蔽,虛擲時光而毫無覺知。
返回列表 上一主題