【发布时间】:2016-07-11 17:48:01
【问题描述】:
亲爱的知识渊博的程序员,
我想将两个不同 Excel 工作簿(阅读:心理测试)中的数据导入不同工作簿(数据库)中的单个工作表。但是,在某些情况下,一个人需要进行多次测试,因此我不希望该数据位于数据库的第一个空白行中。在那种情况下,我想将数据导入到具有其他测试值的现有行中。
例如,我有一个数据库,其中包含以下列 A(唯一标识符)、B(智力值 1)、C(智力值 2)、D(性格测试)。第 1 个人进行了智力测试和性格测试,这些结果存储在两个不同的 Excel 文件中。现在我想在数据库中汇总这些分数。性格测试的结果已经导入数据库,因此 A 和 D 列已经填满。因此,智能测试 excel 文件中的代码需要在写入新行之前识别数据库中是否已经存在人员 1。如果此人不存在,则必须创建一个新行。没有此查找的智力测试代码如下所示。
我可以想象它在 If-Else 命令的帮助下工作。此外,我提供的代码需要包含一个引用该唯一标识符的单元格。但是,我对此知之甚少,无法找到合适的解决方案。你们中的哪一位可以帮帮我吗?
Private Sub CommandButton1_Click()
Dim Intelligence1 As String
Dim Intelligence2 As String
Dim mydata As Workbook
Worksheets("Scores").Select
Intelligence1 = Range("D3")
Intelligence2 = Range("D4")
Set mydata = Workbooks.Open("C:\Users\Tim\Desktop\Database-Concept.xlsx")
Worksheets("aggregate").Select
Worksheets("aggregate").Unprotect Password:="1234"
Worksheets("aggregate").Range("a1").Select
RowCount = Worksheets("aggregate").Range("a1").CurrentRegion.Rows.Count
With Worksheets("aggregate").Range("A1")
.Offset(RowCount, 1) = Intelligence1
.Offset(RowCount, 2) = Intelligence2
End With
Worksheets("aggregate").Protect Password:="1234"
mydata.Save
End Sub
编辑
附加了两个虚拟文件的屏幕截图,消除了所有复杂性。
【问题讨论】:
-
我可以想象你在 Personality xls 的某个地方有这个人的名字,另外,你真的需要打开它吗 - 我看到文件是不变的 - 你是否尝试过使用引用另一个 WB 的公式?
-
感谢您的回答。我的想法是为一个人分配一个唯一的 ID(数字/文本/两者的组合),并且该值将手动输入到 Personality.xlsx 和 Intelligence.xlsx 的单元格中。代码可以使用该单元格来检查数据库中是否已经存在该人的条目。如果是这种情况,我假设代码只会写在那个特定的行中。否则,它应该在第一个空白行创建一个新条目。我希望这有帮助?我没有尝试公式引用。
-
抱歉耽搁了,我的意思是这样的公式 ='C:\Users\Tim\Desktop[Database-Concept.xlsx]aggregate'!$A$1 其中 $A$1 将是单元格您将在哪里设置用户。
-
我不确定我是否完全理解您,但设置公式的困难在于文件及其内容必须是静态的。但是,personality.xlsx 和 intelligence.xlsx 被设计为不保存的表单。患者填写的表格内容应存储在数据库中。我想(不完全确定)这会导致困难:公式将引用空的或更改的单元格值?但正如我所说,我对 Excel 和 VBA 的经验并不丰富。如果我将目前创建的 excel 文件转发给您,对您有帮助吗?
-
我明白了,有没有一个单元格,你有病人的名字?该公式有助于从封闭的工作簿中获取值,您应该尝试它只是为了了解它。 OT:模板的图像就足够了,如果可能,请编辑您的问题以包含它。