返回列表 上一主題 發帖

[發問] 核對兩個儲存格的資料

[發問] 核對兩個儲存格的資料

我想寫一組公式核對兩個儲存格的資料, 例如:

                    A                                                    B
1                 組1                                                組2
2     GREEN SHIRT, 100件            STYLE# 12-TB-1028, 100件

我是想核對 A2 和 B2 儲存格內的字同樣有100PCS,
因資料是很大量和是從軟件汇出的, 所以很不方便把"件"的數目分開到另一儲存格.

希望各位高手幫忙一下,
THANKS. ^^

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

執行前:


執行結果:



Option Explicit
Sub TEST() '↑
Dim Brr, Y, i&, T$, X&
'↑宣告變數
Set Y = CreateObject("Scripting.Dictionary")
'↑令Y變數是 字典
Brr = [A1].CurrentRegion
'↑令Brr變數是 二維陣列,以儲存格值帶入陣列中
For i = 2 To UBound(Brr)
'↑設順迴圈
   T = Brr(i, 2)
   '↑令T變數是Brr陣列第2欄的字串值
   If Right(T, 4) Like "#PCS" Then
   '↑如果T變數的右側4字符合條件?
      X = StrReverse(Val("1" & Mid(StrReverse(T), 4))) \ 10
      '↑令X變數是 將T變數反轉化為數值再反轉回來的數值
      Y(X) = "B" & i
      '↑令以X變數當key,item是 "B"字母接i變數,納入Y字典裡
   End If
Next
For i = 2 To UBound(Brr)
'↑設順迴圈
   T = Brr(i, 1)
   '↑令T變數是Brr陣列第1欄的字串值
   If Right(T, 4) Like "#PCS" Then
   '↑如果T變數的右側4字符合條件?
      X = StrReverse(Val("1" & Mid(StrReverse(T), 4))) \ 10
      '↑令X變數是 將T變數反轉化為數值再反轉回來的數值
      Brr(i - 1, 1) = "PCS數同_" & Y(X)
      '↑令Brr陣列第1欄值是 以X變數查Y字典得到item值
      Else
      Brr(i - 1, 1) = "無"
      '↑否則令Brr陣列第1欄值是 "無"
   End If
Next
[C2].Resize(UBound(Brr) - 1, 1) = Brr
'↑令Brr陣列第1欄值從[C2]儲存格開始倒入
Set Y = Nothing: Erase Brr
'↑令釋放變數
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 23# FAlonso


    謝謝
      我會好好研讀
字典兩各字 還真難理解

TOP

回復 10# freeffly
看看我的附檔,有詳細解釋
另樓主說遇到B0問題,要注意如果不用ctrl+alt+Enter,是會給回0的數值,參考附檔C31,不用複合鍵試試看
核對資料.rar (2.46 KB)
80 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 21# FAlonso

陣列公式的思考邏輯,是傳回一個序列的資料集
FIND函數在B欄資料串列中尋找
他傳回的是
FIND(搜尋字串,B2)
FIND(搜尋字串,B3)
FIND(搜尋字串,B4)
FIND(搜尋字串,B5)
.
.
.
這樣一連串的值
這樣在儲存格內顯示的值,會是該一連串的值的第一個值
但實際上FIND是對一個字串做搜尋,所以,只針對第一個儲存格字串做搜尋
必須利用IF及ISNUMBER才能傳回一個TRUE跟FALSE的陣列
學海無涯_不恥下問

TOP

本帖最後由 FAlonso 於 2011-3-15 18:52 編輯

回復 11# gong

依著gong的程式一步一步走
可是到了D11理應有數字,怎知沒有,不知問題出左何處?
80 字節以內
不支持自定義 Discuz! 代碼

TOP

Thanks a lot !

TOP

回復 17# seci

定義名稱x
=LEN(Sheet1!$A2)-LEN(SUBSTITUTE(Sheet1!$A2,",",""))-2
C2陣列公式
{="B"&MIN(IF(ISNUMBER(FIND(MID(A2,FIND(",",SUBSTITUTE(A2,",","",x))+3,255),$B$2:$B$4)),ROW($A$2:$A$4),""))}
學海無涯_不恥下問

TOP

你要的是第二個逗號為分斷點,不是最後一個,改一下謝版主的公式
Y=LARGE(IF(MID(Sheet1!$A2,ROW(INDIRECT("A1:A"&LEN(Sheet1!$A2))),1)=",",ROW(INDIRECT("A1:A"&LEN(Sheet1!$A2))),""),2)
就是了

TOP

Mr. Hsieh
附件是我實際工作要比對的資料,
如圖示 :
我要比對每格內最後兩組資料, 資料需要完全一樣.

Thank you very much~!

未命.jpg (56.04 KB)

未命.jpg

DATA1.rar (1.88 KB)

TOP

        靜思自在 : 能善用時間的人,必能掌握自己努力的方向。
返回列表 上一主題