Board logo

標題: [發問] 如何自動取代新的內容資料? [打印本頁]

作者: winston219    時間: 2010-11-25 20:04     標題: 如何自動取代新的內容資料?

如附檔,謝謝大大![attach]3770[/attach]
作者: Hsieh    時間: 2010-11-25 20:39

只有在另一欄位顯示應取代的實際值
E2=IF(COUNTIF(Sheet2!$A:$A,Sheet1!$A2)>0,VLOOKUP(Sheet1!$A2,Sheet2!$A:$C,5-COLUMN(B$1),0),Sheet1!C2)
向右向下複製
若要直接取代表格內資料須VBA輔助
作者: winston219    時間: 2010-11-25 22:28

謝謝Hsieh大大! 的確用VBA較為方便呢~
作者: baa168    時間: 2010-12-2 13:36

這個公式是陣列的嗎?
感謝分享哦
作者: Andy2483    時間: 2023-3-15 08:40

本帖最後由 Andy2483 於 2023-3-15 08:47 編輯

回復 1# winston219
回復 2# Hsieh


    謝謝前輩
今天後學藉此主題練習 字典基本用法(帶資料表陣列列號)到目標表陣列,請各位前輩指教

Sheet2資料表:
[attach]35944[/attach]

Sheet1結果表 執行前:
[attach]35945[/attach]

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

Option Explicit
Sub Test()
Dim Brr, Crr, Y, i&, T$
'↑宣告變數:(Brr,Crr,Y)是通用型變數,i是長整數,T是字串變數
Set Y = CreateObject("Scripting.Dictionary")
'↑令Y這通用型變數是 字典
Brr = Sheets(1).UsedRange
'↑令Brr這通用型變數是二維陣列 以索引號1的工作表有使用儲存格值帶入
Crr = Sheets(2).UsedRange
'↑令Crr這通用型變數是二維陣列 以索引號2的工作表有使用儲存格值帶入
For i = 2 To UBound(Crr): Y(Trim(Crr(i, 1))) = i: Next
'↑設順迴圈!i從2到 Crr陣列縱向最大索引列號,
'令i迴圈列第1欄Crr陣列值去除前後空白字元當key,Item是 迴圈數i(列號)納入Y字典

For i = 2 To UBound(Brr)
'↑設順迴圈!i從2到 Brr陣列縱向最大索引列號
   T = Trim(Brr(i, 1))
   '↑令T這字串變數是 i迴圈列第1欄Brr陣列值去除前後空白字元的新字串
   If Y.Exists(T) Then
   '↑如果以T變數 查Y字典裡有這key ?
      Brr(i, 3) = Crr(Y(T), 3): Brr(i, 4) = Crr(Y(T), 2)
      '↑令i迴圈列第3欄Brr陣列值是 Y(T)列第3欄Crr陣列值
      'Y(T)是 T變數查Y字典回傳item值
      '↑令i迴圈列第4欄Brr陣列值是 Y(T)列第2欄Crr陣列值
   End If
Next
Sheets(1).[G1].Resize(UBound(Brr), 4) = Brr
'↑令索引號1的工作表從 [G1]開始擴展向下 Brr陣列縱向最大索引列號數列,
'向右擴展 4欄,這擴展範圍的儲存格以Brr陣列值帶入

Set Y = Nothing: Erase Brr, Crr
'↑令釋放變數
End Sub




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