Board logo

標題: 比對兩個分頁資料,回饋欄位值,來源資料(可能)有兩筆以上狀況 [打印本頁]

作者: 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/)