返回列表 上一主題 發帖

[發問] 如何找出特定數值所對應的儲存格內容

[發問] 如何找出特定數值所對應的儲存格內容

各位大大

小弟有乙個檔案是直接匯入sheet1後, 利用A/B兩欄所產生的修改前/後數值(C欄和D欄),

再去比對sheet2的D:V欄(其中F1:V1代表0-16數字)找出該欄所對應的儲存格,

按下乙個按鈕後, 將比對結果轉換(如附檔說明).

煩請先進指導

TEST7.rar (22.97 KB)

回復 1# luke
  1. Sub ex()
  2. Dim Ar(), A As Range, C As Range, B As Range
  3. Set d = CreateObject("Scripting.Dictionary")
  4. With sheet2
  5. For Each A In .Range(.[D2], .[D2].End(xlDown))
  6.    x = A & A.Offset(, 1)
  7.    For Each C In .Range(.[F1], .[F1].End(xlToRight))
  8.    d(x & C) = .Cells(A.Row, C.Column)
  9.    Next
  10. Next
  11. End With
  12. With sheet1
  13. For Each A In .Range(.[A1], .[A1].End(xlDown))
  14. Set B = A.Resize(, 4)
  15. p = IIf(d(B(1) & B(2) & B(3)) = "", Replace(B(2), "X", ""), d(B(1) & B(2) & B(3)))
  16. n = IIf(d(B(1) & B(2) & B(4)) = "", Replace(B(2), "X", ""), d(B(1) & B(2) & B(4)))
  17. A.Offset(, 5).Resize(, 4) = Array(B(1), B(2), p, n)
  18. Next
  19. End With
  20. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 1# luke

直接用工作表函數,參考用

F1=IF(A1="","",A1)  右拉下拉

H1=IF(C1="","",IF(ISNA(INDEX(sheet2!$A$1:$V$16,MATCH($A1&$B1,sheet2!$D$1:$D$16&sheet2!$E$1:$E$16,0),MATCH(C1,sheet2!$A$1:$V$1,0))),C1,INDEX(sheet2!$A$1:$V$16,MATCH($A1&$B1,sheet2!$D$1:$D$16&sheet2!$E$1:$E$16,0),MATCH(C1,sheet2!$A$1:$V$1,0))))
陣列公式   右拉下拉

TOP

回復 2# Hsieh


    測試OK

    謝謝H超版大

TOP

回復 3# register313


    代入H1陣列公式後出現錯誤 #VALUE!

    檢查INDEX(sheet2!$A$1:$V$16,MATCH($A1&$B1,sheet2!$D$1:$D$16&sheet2!$E$1:$E$16,0), 此處有問題

    以上

TOP

回復 5# luke

陣列公式
輸入好公式 要按組合鍵Ctrl+Shift+Enter來作確定
原公式的前後會自動加上{ }

TOP

回復 6# register313

測試OK
   
謝謝register313

TOP

回復 5# luke


    register313大大, 各位先進

     今天測式陣列公式發現一個問題 "若資料超過1萬筆時,電腦變慢跑不動"

      請問如何放入陣列公式於VBA中?

      煩請先進不吝指導 謝謝!

TOP

回復 8# luke

於工作表使用陣列公式發現一個問題 "若資料超過1萬筆時,電腦變慢跑不動"
那用VBA的方式寫陣列公式於工作表還不是一樣,換湯不換藥
=>都是用了陣列公式

使用2# Hsieh超版的VBA程式吧(一般使用VBA比較少在工作表寫入公式)

TOP

本帖最後由 luke 於 2012-4-13 09:33 編輯

回復 9# register313


register313大大

謝謝您的回答, 我碰到的問題如下;
1.H超版的程式是對sheet1 的B欄參數特定數值進行替代,若B欄的數值預設為十六進位(非特定值)時, 會產生程式判斷上錯誤,請參考附檔紅色標示, 正確應為粉紅色標示。
2.若sheet1表C/D兩欄的修改前/後數字為空白時, 也會產生程式判斷上錯誤如第13列紅字。
3.若sheet1表A欄為數字100時, 也會產生程式判斷上錯誤如第14+15列紅字”oo”。

煩請先進指導如何修改程式
不勝感激!
TEST7-1.rar (13.15 KB)

TOP

        靜思自在 : 能付出愛心就是福,能消除煩惱就是慧。
返回列表 上一主題