Board logo

標題: [發問] 多條件之判斷 [打印本頁]

作者: andyhang    時間: 2011-4-11 21:53     標題: 多條件之判斷

[attach]5323[/attach]

多條件之判斷,敬請詳見壓縮檔。

感謝您的指導,謝謝!
作者: Hsieh    時間: 2011-4-11 22:05

回復 1# andyhang


    E24=INDEX($B$5:$F$5,,IF(ISERROR(MATCH($C24,OFFSET($A$1,MATCH($B24,$A$2:$A$4,0),1,,4),0)),5,MATCH($C24,OFFSET($A$1,MATCH($B24,$A$2:$A$4,0),1,,4),0)))
作者: yanto913    時間: 2011-4-12 09:35

C9=IF(ISERROR(OFFSET($A$1,4,MATCH($C$7,OFFSET($A$1,MATCH(B7,A2:A4,0),1,1,4),0))),F5,OFFSET($A$1,4,MATCH($C$7,OFFSET($A$1,MATCH(B7,A2:A4,0),1,1,4),0)))
作者: ANGELA    時間: 2011-4-12 11:14

本帖最後由 ANGELA 於 2011-4-12 13:04 編輯

c9=INDEX($B$5:$F$5,IF(SUMPRODUCT((B7=$A$2:$A$4)*(C7=$B$2:$E$4)*({1,2,3,4})),SUMPRODUCT((B7=$A$2:$A$4)*(C7=$B$2:$E$4)*({1,2,3,4})),5))
如果把F5移到A5
c9=INDEX($A$5:$E$5,SUMPRODUCT((B7=$A$2:$A$4)*(C7=$B$2:$E$4)*{1,2,3,4})+1)
作者: andyhang    時間: 2011-4-17 09:15

都是很有學問的解法,收下,好好研究去,感謝Hsieh 、yanto913 、ANGELA 三位大大的指導,謝謝!
作者: Andy2483    時間: 2023-5-18 11:21

謝謝論壇,謝謝各位前輩
後學藉此帖練習VBA陣列與字典,學習方案如下,請各位前輩指教

執行前:
[attach]36379[/attach]

執行結果:
[attach]36380[/attach]


Option Explicit
Sub TEST() '↑
Dim Brr, Crr, Y, i&, j&, T$, K%
'↑宣告變數
Set Y = CreateObject("Scripting.Dictionary")
'↑令Y變數是 字典
Brr = [A2:E5]
'↑令Brr變數是 二維陣列,以儲存格值帶入陣列中
K = UBound(Brr)
'↑令K變數是Brr陣列最大索引列號
For i = 1 To K
   For j = 2 To UBound(Brr, 2)
      T = Brr(i, 1) & "/" & Brr(i, j)
      Y(T) = Brr(K, j)
   Next
Next
'↑設順迴圈將資料區組合字串當key,item是類別,納入Y字典中
Brr = Range([C24], [B65536].End(xlUp))
'↑令Brr變數重新定義是 二維陣列,換裝新儲存格值
ReDim Crr(1 To UBound(Brr), 1 To 1)
'↑宣告Crr陣列是 二維空陣列,縱向範圍同Brr,橫向範圍1~1索引號
For i = 1 To UBound(Brr)
   T = Brr(i, 1) & "/" & Brr(i, 2)
   If Y(T) = "" Then
      Crr(i, 1) = "E類"
      Else
         Crr(i, 1) = Y(T)
   End If
Next
'↑設順迴圈將目標區組合字串查Y字典得到item值帶入Crr陣列中,
'如果查Y字典其item值是"",Crr陣列則寫入"E類"

[E24].Resize(UBound(Crr)) = Crr
'↑令Crr陣列值寫如結果儲存格中
Set Y = Nothing: Erase Brr, Crr
'↑令釋放變數
End Sub




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)