標題:
比對兩個分頁資料,回饋欄位值,來源資料(可能)有兩筆以上狀況
[打印本頁]
作者:
HSIEN6001
時間:
2013-11-14 19:57
標題:
比對兩個分頁資料,回饋欄位值,來源資料(可能)有兩筆以上狀況
如題!
比對兩個分頁資料,回饋欄位值,當來源資料有兩筆以上
應該如何寫?!
不知能用VBA完成?!還是只能用函數
請各位大大幫個忙
好讓我學習應用
謝謝!!
[attach]16698[/attach]
作者:
stillfish00
時間:
2013-11-15 15:28
本帖最後由 stillfish00 於 2013-11-15 15:30 編輯
回復
1#
HSIEN6001
修改一下錄製Microsoft Query的巨集,Left Join結合兩表。
Sub Test()
On Error Resume Next
With Sheets("回饋數值")
.Cells.ListObject.QueryTable.Delete
.Cells.ClearContents
With .ListObjects.Add(SourceType:=0, Source:=Array(Array( _
"ODBC;DSN=Excel Files;DBQ=" & ThisWorkbook.FullName & ";DefaultDir=" & ThisWorkbook.Path & ";DriverId=1046;MaxB" _
), Array("ufferSize=2048;PageTimeout=5;")), Destination:=.Range("$A$1")). _
QueryTable
.CommandText = Array( _
"SELECT `來源1$`.代號, `來源1$`.名稱, `來源1$`.日期, `來源1$`.漲跌, `來源1$`.收盤, `來源1$`.`成交(張)`, `來源1$`.當沖, `來源2$`.大股東名稱, `來源2$`.`異動(張)`, `來源2$`.上月持張, `來源2$`.本月持張" & Chr(13) & "" & Chr(10) & "FR" _
, _
"OM {oj `" & ThisWorkbook.FullName & "`.`來源1$` `來源1$` LEFT OUTER JOIN `" & ThisWorkbook.FullName & "`.`來源2$` `來源2$` ON `來源1$`.代號 = `來源2$`." _
, "代號}")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "表格_來自_Excel_Files_的查詢"
.Refresh BackgroundQuery:=False
End With
End With
End Sub
作者:
stillfish00
時間:
2013-11-15 15:49
回復
2#
stillfish00
小筆誤
Sub Test()
With Sheets("回饋數值")
On Error Resume Next
.Cells.ListObject.QueryTable.Delete
.Cells.ClearContents
On Error goto 0
With .ListObjects.Add(SourceType:=0, Source:=Array(Array( _
"ODBC;DSN=Excel Files;DBQ=" & ThisWorkbook.FullName & ";DefaultDir=" & ThisWorkbook.Path & ";DriverId=1046;MaxB" _
), Array("ufferSize=2048;PageTimeout=5;")), Destination:=.Range("$A$1")). _
QueryTable
.CommandText = Array( _
"SELECT `來源1$`.代號, `來源1$`.名稱, `來源1$`.日期, `來源1$`.漲跌, `來源1$`.收盤, `來源1$`.`成交(張)`, `來源1$`.當沖, `來源2$`.大股東名稱, `來源2$`.`異動(張)`, `來源2$`.上月持張, `來源2$`.本月持張" & Chr(13) & "" & Chr(10) & "FR" _
, _
"OM {oj `" & ThisWorkbook.FullName & "`.`來源1$` `來源1$` LEFT OUTER JOIN `" & ThisWorkbook.FullName & "`.`來源2$` `來源2$` ON `來源1$`.代號 = `來源2$`." _
, "代號}")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "表格_來自_Excel_Files_的查詢"
.Refresh BackgroundQuery:=False
End With
End With
End Sub
作者:
HSIEN6001
時間:
2013-11-15 19:58
回復
3#
stillfish00
你好!謝謝回覆
剛剛執行結果如圖,不知道哪裡有問題
[attach]16713[/attach]
語法很深奧..看不懂 T_T
我也會試著用函數的方式寫寫看
稍後若還是弄不出來,再向各位前輩求助
^^
作者:
HSIEN6001
時間:
2013-11-15 22:38
請問,陣列的設定應該如何寫
爬文許久,無法融會貫通
再請大大幫幫忙!!拜託~
[attach]16715[/attach]
作者:
stillfish00
時間:
2013-11-15 22:38
回復
4#
HSIEN6001
DriverId=1046 改成 DriverId=790 看看
應該是EXCEL版本不同問題...
語法因為是錄的,我也沒有整理過,所以很難看懂,
作者:
HSIEN6001
時間:
2013-11-15 22:52
回復
6#
stillfish00
謝謝您回覆,修改了
但執行結果也是相同,是否要勾選引用項目?
作者:
HSIEN6001
時間:
2013-11-15 23:18
[attach]16718[/attach]
目前完成了個別欄位的設定
{=INDEX(來源1!$C$1:$C$1000,MATCH(回饋數值!A2&B2,來源1!$A$1:$A$1000&來源1!$B$1:$B$1000,0),1)}
但不知要如何應用這段語法,設定為區間
'=
IF(INT((COLUMN(A$1)-1)/4)+1>
COUNTIF(來源1!$A:$F,回饋數值!$A2),"",INDEX(來源1!$A:$F,SMALL(IF(來源1!$A$1:$M$1000=回饋數值!$A2,ROW($1:$1000),""),INT((COLUMN(A$1)-1)/4)+1),{2,3,4,5,6}))
紅字部分無法弄懂!
上面這段語法來源,忘了連結點
如附件
[attach]16720[/attach]
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)