将标准Excel表单转置,匹配和导入Excel数据库

时间:2014-03-06 23:36:38

标签: excel vba excel-vba import transpose

我是VBA的新手,但我正在设置Excel中的数据库(我意识到Access更适合我,但我正在为其他人这样做。)

我有一个源文件,其中包含B5:B17范围内的信息,此表单将供其他人发送给管理数据库的人员。我需要编写一个VBA代码,它将选择源范围内的数据,转置它,查找匹配是否存在,然后覆盖现有数据或添加到下一个空行。这是序列:

  1. 提示数据库管理器打开源文件(我知道如何执行此操作)
  2. 转置B5:B17
  3. 中的数据
  4. 在单元格B7(源文件)中搜索匹配项并将其与C列(数据库)中的值匹配
  5. 覆盖匹配数据
  6. 如果不存在匹配项,则写入下一个空行。
  7. 我一直使用以下code作为指南,但它有一些限制。源文件必须打开,我也不知道如何将Transpose函数包含在此代码中。任何帮助ID赞赏

1 个答案:

答案 0 :(得分: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