2013-01-14 46 views
0

我已經做了徹底搜查,但找不到我的具體問題的答案,使用Microsoft Excel 2003的Microsoft Excel 2003 - 抄寫序描述

我需要從複製R列描述(字母)通過svc_itm_cde(服務項目代碼)將一個xls電子表格(我們稱之爲ssA)添加到另一個電子表格(ssB)中的列L & M.大約有300個svc_itm_cdes。

三併發症:

  1. 在撒哈拉以南非洲的svc_itm_cde列不在相同的順序一個從國家統計局。
  2. ssB中L & M的某些行已包含說明,並且必須跳過。
  3. ssB中的某些svc_item_cdes不會出現在ssA中,反之亦然。

一位朋友幫助我導出到CVS並開始一個Python腳本,但是這太過於冗長。有沒有辦法用vba代碼(最好)做到這一點?

非常感謝。

+1

列R中的內容是否進入目標工作表的兩列(L和M)?看起來像'vlookup()'應該爲此工作。 –

+0

你可能會顯示printscreens?知道你想要達到什麼會更容易。 – ApplePie

+0

vlookup看起來很引人注目,Tim。我可能會放棄這一點。對不起,亞歷山大,我忘了提及:數據不幸是保密的,所以我可以一般性地描述它們,但是打印屏幕會有點過分。我不想惹麻煩。 :( – user1978773

回答

0

這可能是做這行300只記錄了過於複雜的方式,但它是爲大型數據集的一個有用的技術...

如果你只需要得到所有的數據集中在一個地方,所以你可以計算出哪些描述要保留,哪些丟失,然後您可以使用ADO並將兩個數據集合在一起。

首先進入Visual Basic編輯器(按Alt + F11)。一旦有使用工具>引用添加引用「Microsoft ActiveX數據對象2.8庫」

現在插入>模塊並在此代碼粘貼:

Option Explicit 

Sub master_list() 

    Dim cn As ADODB.Connection 
    Set cn = New ADODB.Connection 

    ' This is the connection string for .xlsx files (Excel 2007 and later) 
    With cn 
     .Provider = "Microsoft.ACE.OLEDB.12.0" 
     .ConnectionString = "Data Source=" & ThisWorkbook.FullName & ";" & _ 
      "Extended Properties=Excel 12.0 Xml;" 
     .Open 
    End With 

    Dim rs As ADODB.Recordset 
    Set rs = New ADODB.Recordset 

    rs.Open "SELECT * FROM [ssA$] LEFT JOIN [ssB$] ON [ssA$].[svc_itm_cde] = " & _ 
    "[ssB$].[svc_itm_cde] UNION ALL SELECT * FROM [ssA$] RIGHT JOIN [ssB$] ON " & _ 
    "[ssA$].[svc_itm_cde] = [ssB$].[svc_itm_cde] " & _ 
    "WHERE [ssA$].[svc_itm_cde] IS NULL;", cn 

    Dim i As Integer 
    Dim fld As ADODB.Field 
    i = 0 

    ' Sheet3 should be a blank sheet that we can output the results to 
    With Worksheets("Sheet3") 
     For Each fld In rs.Fields 
      i = i + 1 
      .Cells(1, i).Value = fld.Name 
     Next fld 

     .Cells(2, 1).CopyFromRecordset rs 
    End With 

    rs.Close 
    cn.Close 

    End Sub 

如果您使用的是Excel 2003或更早版本,則連接字符串部分應爲:

With cn 
    .Provider = "Microsoft.Jet.OLEDB.4.0" 
    .ConnectionString = "Data Source=" & ThisWorkbook.FullName & ";" & _ 
     "Extended Properties=Excel 8.0;" 
    .Open 
End With 
+0

非常感謝所有的答案,我非常感謝,問題解決了! – user1978773