返回列表 上一主題 發帖

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

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

回復 11# gong

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

TOP

回復 21# FAlonso

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

TOP

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

TOP

回復 23# FAlonso


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

TOP

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

執行前:


執行結果:



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

        靜思自在 : 唯其尊重自己的人,才更勇於縮小自己。
返回列表 上一主題