Board logo

標題: [發問] 工作表比對,改陣列比對卡住,請各位先進指點 [打印本頁]

作者: dou10801    時間: 2022-1-24 12:16     標題: 工作表比對,改陣列比對卡住,請各位先進指點

工作表比對,改用陣列比對卡住,請各位先進指點,[陣列比對1]工作表,array()字串太長,如何處理,謝謝.
作者: samwang    時間: 2022-1-24 12:26

回復 1# dou10801

不好意思,看不太懂需求,可否請您說明詳細需求,比對什麼,結果呈現什麼? .... 謝謝
作者: dou10801    時間: 2022-1-24 12:45

回復 2# samwang samwang抱歉沒講清楚,原用[數據]-工作表,作依據在[工作表比對]-工作表查[數據]-工作表的的內容比對,沒問題.
想用[數據]-工作表的內容用陣列代替,但array()內字串太長,vba無法使用.範本在,[陣列比對1]-工作表,謝謝.
作者: samwang    時間: 2022-1-24 13:14

回復 3# dou10801

請測試看看,謝謝
Sub test()
Dim Arr, xD, T$, i&
Set xD = CreateObject("Scripting.Dictionary")
Arr = Sheets("數據").[a1].CurrentRegion
For i = 2 To UBound(Arr): T = Arr(i, 1): xD(T) = Arr(i, 2): Next
With Sheets("工作表比對")
    Arr = .[b1].CurrentRegion
    For i = 2 To UBound(Arr): T = Arr(i, 1): Arr(i, 2) = xD(T): Next
    .[b1].Resize(UBound(Arr), 2) = Arr
End With
End Sub
作者: dou10801    時間: 2022-1-24 13:33

回復 4# samwang 如果不要調用Sheets("數據").內的資料(如有500筆),直接用array()把500筆套入字串會很長vba無法使用.[例]array(001,002,003,004,005,006,007,..........................498,499,500).
作者: samwang    時間: 2022-1-24 13:41

回復 5# dou10801

資料這麼多不從數據直接調用,反而一筆一筆輸入有點不符合常理吧? 謝謝
作者: dou10801    時間: 2022-1-24 13:55

本帖最後由 dou10801 於 2022-1-24 14:04 編輯

回復 6# samwang 感謝先進導正,因有內部重要資料怕在工作表被人更動,想寫在vba內,可能邏輯思考錯誤,感恩.
作者: samwang    時間: 2022-1-24 14:18

回復 7# dou10801
單純語法問題,如下"空格 _" 、加文字"",謝謝

Arr = Array(1, 2, 3, _
4, 5)
Brr = Array("何", _
"呂", "施", "張", "孔")
作者: 准提部林    時間: 2022-1-24 22:18

兩個ARRAY互相參照, 500多個,
維護或修改時很容易出錯, 例如要更改第109個數字或文字, 還要細細找對位,
不是個好方案~~

用一工作表作參照, 將資料欄隱藏後, 再將工作表保護再設不可見~~
作者: singo1232001    時間: 2022-1-26 02:38

本帖最後由 singo1232001 於 2022-1-26 02:50 編輯

回復 1# dou10801

不好做 很難 難在字元轉換

因為繁體字有很多是特殊字  若有簡體也是  進陣列或者字典 會變"?" 符號  就比不了

只能用uri 字元來做

所以你若要直接寫入vba裡面 只能寫入 uri後的編碼

編碼與編碼比對後 比到相同的   之後取得數字 然後文字在靠反編碼解回來

由於2013後的excel 有big5 轉url的功能
但沒有url轉回big5 的功能
需要createobject引用"htmlfile" 利用該內庫的功能 來協助轉換編碼
若excel本身沒有2013以上
連big5轉url 都不行
就只能用  sub encodeURIComponent 來協助 轉換編碼




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