返回列表 上一主題 發帖

[發問] 工作表比對,改陣列比對卡住,請各位先進指點

[發問] 工作表比對,改陣列比對卡住,請各位先進指點

工作表比對,改用陣列比對卡住,請各位先進指點,[陣列比對1]工作表,array()字串太長,如何處理,謝謝.

陣列比對.rar (41.41 KB)

杜小平

回復 1# dou10801

不好意思,看不太懂需求,可否請您說明詳細需求,比對什麼,結果呈現什麼? .... 謝謝

TOP

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

TOP

回復 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

TOP

回復 4# samwang 如果不要調用Sheets("數據").內的資料(如有500筆),直接用array()把500筆套入字串會很長vba無法使用.[例]array(001,002,003,004,005,006,007,..........................498,499,500).
杜小平

TOP

回復 5# dou10801

資料這麼多不從數據直接調用,反而一筆一筆輸入有點不符合常理吧? 謝謝

TOP

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

回復 6# samwang 感謝先進導正,因有內部重要資料怕在工作表被人更動,想寫在vba內,可能邏輯思考錯誤,感恩.
杜小平

TOP

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

Arr = Array(1, 2, 3, _
4, 5)
Brr = Array("何", _
"呂", "施", "張", "孔")

TOP

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

用一工作表作參照, 將資料欄隱藏後, 再將工作表保護再設不可見~~

TOP

本帖最後由 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 來協助 轉換編碼

陣列比對特殊字元 v1.zip (74.2 KB)

TOP

        靜思自在 : 人的心地是一畦田,土地沒有播下好種子,也長不出好的果實。 -
返回列表 上一主題