Board logo

標題: [發問] VBA_R區&T區&$R$6區等三個區域【每一個】對應列之絕對交集值各標示底色。 [打印本頁]

作者: Airman    時間: 2015-12-14 22:56     標題: VBA_R區&T區&$R$6區等三個區域【每一個】對應列之絕對交集值各標示底色。

[attach]22834[/attach]

◆◆U7只是作輔助說明之用,請無須理會

說明︰
R7-1,R7-2,R7-3,R7-4(R區域);
T5-1,T5-2,T5-3,T5-4(T區域);
R6-1,R6-2,R6-3,R6-4($R$6區域)

需求:
b<>"", $R$6區T區=R區*R區$R$6區=T區*T區R區=$R$6區時,
則將R區&T區&$R$6區三個區域【每一個】對應列絕對交集值的儲存格各標示底色。

[attach]22835[/attach]

請問︰列9以下的程式碼要如何增寫?
懇請各位先進、前輩不吝賜教!  謝謝!

詳如附件。
PS:需求步驟推演~請詳見標籤有底色的工作表之圖示和說明。
作者: Airman    時間: 2015-12-15 10:37

回復 1# Airman
補充另一程式邏輯的說明~希望對解題有幫助~
[attach]22839[/attach]

附件: [attach]22841[/attach]
謹供參考!謝謝!
作者: Airman    時間: 2015-12-15 15:06

回復 2# Airman
[attach]22845[/attach]

Sorry~修正筆誤~
第7列: 2........,則其餘的4個.....改為5個
第9列: 3........,則其餘3個.....改為4個
  謝謝!
作者: Airman    時間: 2015-12-15 18:46

回復 1# Airman
萬分抱歉~愈說愈亂~#2#3作廢

再重新整理~
新附件︰[attach]22847[/attach]

謹供參考!謝謝!
作者: 准提部林    時間: 2015-12-16 22:16

只想到〔自訂函數〕及〔副程式〕方式:
[attach]22857[/attach]

若不適用,也想不出其他法子了!!!
作者: 准提部林    時間: 2015-12-16 23:04

漏〔點〕了,請自行加入〔紅色〕點:
If xNum <> "" Then Call 三區填色(.[J6:P6], .[R6], .[T5], b(1, -1).Value, 4, xNum)
作者: Airman    時間: 2015-12-16 23:09

本帖最後由 Airman 於 2015-12-16 23:12 編輯

回復 5# 准提部林

准大:
不好意思,總是勞煩您

以發問題附檔測試OK了~感恩

PS:
呵~呵~您寫得太精緻細膩了~小弟一時還不知應如何套進到實際的使用主檔中?
今夜仔細拜讀貴程式解碼與研習後~明日再向您提報告~謝謝您
作者: Airman    時間: 2015-12-17 01:00

本帖最後由 Airman 於 2015-12-17 01:08 編輯

回復 6# 准提部林
准大:
呵~呵~馬上遇到二個問題~不是貴程式碼有問題,而是小弟程度太Low的緣故~
Q1:請問模組的名稱要怎麼更改?
上網查~都說不能更改~必須另寫程式~但明明就看到您沒有另寫程式就更改了

Q2:請問T7公式的自訂函數可以更改為不引用U欄的值嗎?
因為在實際的使用檔中無法以U欄作輔助欄(可能您沒有注意到小弟說明中之"不用理會U欄"的註記)

以上  敬請您惠予賜教!感恩
作者: Airman    時間: 2015-12-17 04:18

本帖最後由 Airman 於 2015-12-17 04:32 編輯

回復 5# 准提部林
准大:
呼~終於找到資料~知道怎麼更改模組名稱了:lol

只剩下公式的問題了~會中斷在xNum = GetNumB1(.[J6:P6], .[R6], .[T5], b(1, -1).Value, 4)  
謝謝您:D

表格長這樣(公式會右拉~欄位不定~所以無法用輔助欄)[attach]22859[/attach][attach]22859[/attach][attach]22859[/attach][attach]22859[/attach]
作者: Airman    時間: 2015-12-17 08:18

本帖最後由 Airman 於 2015-12-17 08:32 編輯

回復 5# 准提部林
准大:早安!
不好意思,看來是小弟畫蛇添足的說明惹禍了~讓程式邏輯變得如此複雜

以目前看來~要解決問題的癥結點~GetNumB1~應該是會大費周章~
因此可否~請您以如附件中的列19~列29的直述式的程式邏輯來撰寫程式碼~
且公式也不要用自訂函數就用原公式即可
如日後有需要改變計算位址的時候~小弟載自行更改程式碼即可。

另外~在貴解答完成除了DATA!和Sheet1!以外的其它工作表~小弟就都會移除~
所以除了DATA!和Sheet1!以外的工作表都只是作輔助說明之用,請您不要引用於公式或程式碼中。
謝謝您

參考附件︰[attach]22860[/attach]

以上  懇請您惠予賜教~感恩

PS:如附件中的列19~列29的直述式的程式邏輯~小弟可以自行套進到實際的使用主檔中。謝謝您
作者: 准提部林    時間: 2015-12-17 13:07

既然以公式為主, 即其〔交集值.同欄.不同欄〕的條件皆依公式判定,
程式只要將三區相同號碼標色即可, 不須再判斷同不同欄:
[attach]22863[/attach]
作者: Airman    時間: 2015-12-17 14:31

回復 11# 准提部林
准大:
不好意思 ~小弟自己將需求搞複雜了~耽誤您許多寶貴的時間~敬請見諒~謝謝您

測試OK了~也套用好了~感恩
作者: Airman    時間: 2015-12-17 15:20

本帖最後由 Airman 於 2015-12-17 15:35 編輯

回復 11# 准提部林
准大:
不好意思  ~小弟想藉此再續請問一個類似需求~
如果小弟將公式中與對應列有關的一組對應列的交集值改為一組對應列的交集值(即其與對應列有關的公式中之3個AND改為3個OR)~
請問:目前貴解的對應列程式碼應該如何修改?

敬請惠予賜教為禱~感恩
作者: 准提部林    時間: 2015-12-17 17:59

回復 13# Airman


RW = Array(.[T5], .[R6], b(1, -1))
For x = 1 To 4
For y = 1 To 3
For z = 1 To 7
  Set R(1) = .[J6].Cells(RW(y - 1) - x + 1, z)
  Set R(2) = Nothing
  For i = 1 To 3
    If i <> y Then Set R(2) = .[J6:P6].Offset(RW(i - 1) - x, 0).Find(R(1), Lookat:=xlWhole)
    If Not R(2) Is Nothing Then R(1).Interior.ColorIndex = Array(4, 6, 8)(y - 1): Exit For
  Next i
Next z
Next y
Next x
作者: Airman    時間: 2015-12-17 19:28

回復 14# 准提部林
准大:
測試OK了!謝謝您耐心的指導~感恩




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