Board logo

標題: [發問] 請教關於資料比對後之不重複的數量 [打印本頁]

作者: 偉婕    時間: 2010-8-20 01:22     標題: 請教關於資料比對後之不重複的數量

我有數筆資料,每個儲存格中的資料若有多個字串是以分號區隔,我想要去判斷由分號區隔的字串是否相同
情況有以下:
1)若[國別]中僅有一個字串,則於[跨國]欄位中顯示0
2)若[國別]中有二個或二個以上字串,但由於分號區隔的字串比對後相同,則於[跨國]欄位中顯示0
3)若[國別]中有二個或二個以上字串,但由於分號區隔的字串比對後有不同者,則於[跨國]欄位中顯示不同的個數
除了透過資料剖析後,再搭配其他函數外,有沒有較快速的解決方法,謝謝!

國別                            跨國
France                         0
Japan; Japan                      0
USA; USA; USA                     0
Japan; South Korea                  2
Singapore; Italy; USA; Italy              3
Japan; Japan; Japan; Japan              0
Japan; Japan; Japan                  0
South Korea; South Korea; South Korea        0
Turkey; USA                      2
作者: oobird    時間: 2010-8-20 11:51

本帖最後由 oobird 於 2010-8-20 11:55 編輯

[attach]2502[/attach]回復 1# 偉婕


    感覺妳好像常要處理類似數據,寫個自訂函數來用如何?
作者: Hsieh    時間: 2010-8-20 19:51

回復 1# 偉婕
湊熱鬧一下
自定義函數
資料剖析加函數
[attach]2508[/attach]
作者: 偉婕    時間: 2010-8-21 01:32

謝謝oobird 與 Hsieh 兩位版主的協助,已解決我的問題囉!
作者: leiru    時間: 2010-8-22 23:40

Hsieh版主回答的很好,謝謝說明.
作者: Andy2483    時間: 2023-5-10 10:46

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

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

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


Option Explicit
Sub TEST()
Dim Brr, Y, x, A, N%, i&
'↑宣告變數
Set Y = CreateObject("Scripting.Dictionary")
'↑令Y變數是字典
Brr = Range([B2], [A65536].End(3))
'↑令Brr變數是 二維陣列,以儲存格值帶入
For i = 1 To UBound(Brr)
'↑設順迴圈
   A = Split(Replace(Brr(i, 2), " ", "") & ";", ";")
   '↑令A變數是一維陣列,以";"字元分割字串帶入
   For Each x In A
   '↑設逐項迴圈!x變數是A一維陣列裡的陣列子
      If x <> "" Then
      '↑如果x變數不是空字元?
         Y(x) = ""
         '↑令x變數是key,item是空字元,納入Y字典裡(濾重複)
         N = N + 1
         '↑令N變數累加1 (累加國數)
      End If
   Next
   Brr(i, 1) = N: N = 0
   '↑令原陣列位置第1欄寫入N變數(國數),令N變數歸零(因為下個迴圈要用此變數)
   Brr(i, 2) = IIf(Y.Count > 1, Y.Count, 0)
   '↑令原陣列位置第2欄寫入 跨國數
   Y.RemoveAll
   '↑令清空Y字典
Next
[D1:E1] = [{"國別數","跨國數"}]
'↑令儲存格寫入標題列
[D2].Resize(UBound(Brr), 2) = Brr
'↑令Brr陣列值從[D2]開始帶入儲存格
Set Y = Nothing: Erase Brr, A
'↑令釋放變數
End Sub




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