返回列表 上一主題 發帖

比對兩個分頁資料,回饋欄位值,來源資料(可能)有兩筆以上狀況

比對兩個分頁資料,回饋欄位值,來源資料(可能)有兩筆以上狀況

如題!
比對兩個分頁資料,回饋欄位值,當來源資料有兩筆以上
應該如何寫?!

不知能用VBA完成?!還是只能用函數
請各位大大幫個忙
好讓我學習應用
謝謝!!
回饋欄位值.rar (22.71 KB)

本帖最後由 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

TOP

回復 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

TOP

回復 3# stillfish00

你好!謝謝回覆
剛剛執行結果如圖,不知道哪裡有問題


   
語法很深奧..看不懂  T_T


我也會試著用函數的方式寫寫看
稍後若還是弄不出來,再向各位前輩求助
^^

TOP

請問,陣列的設定應該如何寫
爬文許久,無法融會貫通

再請大大幫幫忙!!拜託~
回饋欄位值.rar (27.66 KB)

TOP

回復 4# HSIEN6001
DriverId=1046 改成 DriverId=790 看看
應該是EXCEL版本不同問題...

語法因為是錄的,我也沒有整理過,所以很難看懂,

TOP

回復 6# stillfish00


    謝謝您回覆,修改了
但執行結果也是相同,是否要勾選引用項目?

TOP

回饋欄位值-個別欄位設定.rar (27.61 KB)
目前完成了個別欄位的設定
{=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}))

紅字部分無法弄懂!

上面這段語法來源,忘了連結點
如附件
欄位比對回饋.rar (133.37 KB)

TOP

        靜思自在 : 受人點水之恩,須當湧泉以報。
返回列表 上一主題