返回列表 上一主題 發帖

[發問] 請教關於資料比對後之不重複的數量

[發問] 請教關於資料比對後之不重複的數量

我有數筆資料,每個儲存格中的資料若有多個字串是以分號區隔,我想要去判斷由分號區隔的字串是否相同
情況有以下:
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

990920.rar (3.64 KB)

偉婕電子書,歡迎免費下載參考
http://www.twbts.com/ebook/?subject=office
http://www.twbts.com/ebook/?subject=soft
偉婕藏書庫---https://www.facebook.com/groups/669579416484096/
有一家柑仔店---https://www.facebook.com/sadodona

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

990920.rar (8.47 KB) 回復 1# 偉婕


    感覺妳好像常要處理類似數據,寫個自訂函數來用如何?

TOP

回復 1# 偉婕
湊熱鬧一下
自定義函數
資料剖析加函數
990920.rar (9.52 KB)
學海無涯_不恥下問

TOP

謝謝oobird 與 Hsieh 兩位版主的協助,已解決我的問題囉!
偉婕電子書,歡迎免費下載參考
http://www.twbts.com/ebook/?subject=office
http://www.twbts.com/ebook/?subject=soft
偉婕藏書庫---https://www.facebook.com/groups/669579416484096/
有一家柑仔店---https://www.facebook.com/sadodona

TOP

Hsieh版主回答的很好,謝謝說明.
joyce

TOP

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

執行前:


執行結果:



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
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 甘願做、歡喜受。
返回列表 上一主題