2014-03-06 73 views
0

我是VBA的新手,但我正在設置Excel中的數據庫(我意識到Access更好,但我正在爲其他人做)。轉置,匹配和導入標準的Excel表格到Excel數據庫

我有一個源文件,其中包含範圍B5:B17中的信息,此表單將用於其他人發送給管理數據庫的人員。我需要編寫一個VBA代碼,用於選擇源範圍中的數據,轉置它,找到一個匹配項,然後覆蓋現有數據或添加到下一個空白行。這裏是序列:

  1. 提示數據庫管理器打開源文件(我知道如何做到這一點)
  2. 移調在B5的數據:B17
  3. 搜索在單元格B7(匹配源文件)並將其與列C(數據庫)中的值進行匹配
  4. 覆蓋匹配的數據
  5. 如果不存在匹配,則寫入下一個空行。

我一直在使用以下code作爲指導,但它有一些限制。源文件必須打開,我也不確定如何將Transpose函數包含到此代碼中。任何幫助編號讚賞

回答

0

這應該做你在找什麼。

Sub Sample() 
Dim rngEnteredID As Range 
Dim lngRowWithMatch As Range 

Set rngEnteredID = Sheets("Sheet1").Range("B7") 

On Error GoTo NoMatch 
lngRowWithMatch = WorksheetFunction.Match(rngEnteredID.Value, Sheets("Sheet2").Range("C:C"), 0) 
On Error GoTo 0 
Sheets("Sheet2").Range("A" & lngRowWithMatch & ":K" & lngRowWithMatch).Value = Application.Transpose(Sheets("Sheet1").Range("B5:B17")) 
Exit Sub 

NoMatch: 
Dim lngEmptyRow As Long 
lngEmptyRow = Sheets("Sheet2").Cells(Rows.Count, 3).End(xlUp).Row + 1 

Sheets("Sheet2").Range("A" & lngEmptyRow & ":K" & lngEmptyRow).Value = Application.Transpose(Sheets("Sheet1").Range("B5:B17")) 
End Sub