返回列表 上一主題 發帖

[發問] VLookup Vba用法

[發問] VLookup Vba用法

本帖最後由 ziv976688 於 2021-9-30 06:43 編輯

想將下列的函數公式化為程式碼~
.[A4:A10].Formula = "=IF(A$1="""","""",VLOOKUP(A$1,DATA!$A:$H,ROW()-2,))": .[A4:A10] = .[A4:A10].Value    '列132
現改為程式碼
If .Cells(1, 1) <> "" Then .Range("A4:A10") = Application.VLookup(.Range("A1"), Sheets("DATA").Range("A:H"), Row() - 2, 0)    '列133

列133產生偵錯
未命名.png
2021-9-30 06:41

請問:正確語法應該如何編寫?
懇請各位大大賜教。謝謝!

TEST_0930.rar (272.02 KB)

回復 1# ziv976688


If .[a1] <> "" Then For i = 4 To 10: .Cells(i, 1) = Application.VLookup(.Range("A1"), Sheets("DATA").Range("A:H"), i - 2, 0): Next

TOP

回復 1# ziv976688


.[A4:A10].Formula = "=IF(A$1="""","""",VLOOKUP(A$1,DATA!$A:$H,ROW()-2,))": .[A4:A10] = .[A4:A10].Value    '列132
>> 請問原來那個'列132不是可以用嗎? 為何要改?

TOP

本帖最後由 ziv976688 於 2021-9-30 14:15 編輯

回復 2# samwang
測試成功
多學一招(原來Row( ),必須以 i = 4 To 10來表達)
謝謝您的指導~感恩

回復 3# samwang
只是想學習函數公式如何轉化為程式語法~
由函數公式比對程式碼~末學較能消化語法的意義。
謝謝您

TOP

回復 3# samwang
不好意思~末學尚有3個函數公式,想轉化為程式語法~
詳如範例附件 :   TEST_0930_V1.rar (279.76 KB)

以上   懇請賜教。謝謝您!   

TOP

回復 5# ziv976688

末學尚有3個函數公式,想轉化為程式語法~
>> 如附件,26列的最小=0 的個數答案與你的效果檔有差異,請再確認您的條件需求為何? 謝謝

7T_搜尋(統)字檔(主檔)_1001.zip (37.55 KB)

TOP

本帖最後由 ziv976688 於 2021-10-2 00:38 編輯

回復 6# samwang
不好意思 ,測試未達結果~
測試好幾次,都在   .EntireColumn.AutoFit    '列172處中斷~如圖片
未命名.png
2021-10-2 00:05

如果將  .EntireColumn.AutoFit  改為註解後~
再點執行~螢幕會變黑屏~檔案也關不掉~只能強制重新開機後~再測試~測試好幾次,都是如此

懇請賜正
謝謝您

TOP

回復 7# ziv976688


測試好幾次,都在   .EntireColumn.AutoFit    '列172處中斷~如圖片
>> 我測試沒問題,請看附件,可以先設中斷點在'列172的前面幾個,然後執行程式到中斷點後再按F8去偵測除錯,
請再測試看看,謝謝
1.gif

TOP

本帖最後由 ziv976688 於 2021-10-2 10:45 編輯

回復 8# samwang
不好意思,依照您的說明操作,按執行鍵後~得如下偵錯點圖片~
未命名.png
2021-10-2 10:23

再按F8~沒有反應

因為是初次操作如上的步驟,我也不知道步驟對不對?更不知道如何逐段偵錯~
所以乾脆將"版面格式"的程式碼全段改為註解~
再按執行鍵~可以正常而得到結果了。

測試結果 : W26有誤~答案應為 1
因為W51= 0
詳如附件範例 : TEST_1002.rar (88.91 KB)

以上  懇請賜正
謝謝您

TOP

本帖最後由 ziv976688 於 2021-10-2 19:58 編輯

回復 8# samwang
請參考本新附件範例即可
TEST_1002_V2.rar (331.41 KB)
C26 : AY26補充說明 :
.[c26].Resize(1, 49)的搜尋範圍=.Range("c51:ay" & R);統計範圍=由c51起始每跳17列的儲存格。

.[c26:ay26]顯示的數字或文字的程式邏輯~
統計範圍各個單欄為各統計標的~
當某單欄全部=""時,則該欄第26列儲存格顯示""
EX1 : C欄統計範圍全部=""則C26=""
EX2 : E欄統計範圍全部=""則E26=""

其餘......類推。

當某單欄只要有顯示="0"的數字時,則將該欄有顯示="0"的總個數,填入第26列儲存格。
EX 1 : W 欄的統計範圍W51有顯示0;則W26=1
EX 2 : AC欄的統計範圍AC85有顯示0;則AC26=1

當某單欄都沒有顯示="0"的數字;有顯示其它>0的數字時,則在該欄第26列儲存格,填入"V"。
EX 1 : D欄都沒有顯示="0"的數字;D136=2,則D26=V
EX 2 : F欄都沒有顯示="0"的數字;F119=1F136=2則F26=V
其餘......類推。
詳如附件 : 7T前3大&小+0_0_1894期_100_6個_1次(需求效果檔)

目前效果檔的 W26=V~其答案有誤~
因為W51有顯示0
所以W26答案應為1


以上   懇請賜正
謝謝您 !

TOP

        靜思自在 : 君子立恆志,小人恆立志。
返回列表 上一主題