好的,所以这里有一个问题:
我在医疗保健方面工作,目前我有一个工作簿,使用INDEX:MATCH函数根据患者姓名引用值,我手动输入。我自动使用此方法拉出7/10列。第8列是信息的生成日期,第9列是来自另一张纸的日期/时间戳,我根据患者的房间号手动输入。
这是棘手的部分。我从我们的床管理程序Allscripts中提取的这两份报告并没有以同样的方式翻译床名/数字。所以我在另一张表中创建了一个翻译表。我的问题是:有没有办法我可以使用像INDEX:MATCH,VLOOKUP或Excel或VBA中的其他东西来引用我的翻译表,以便查找床名/编号并自动填写我需要的信息?
电子表格如下所示:
https://docs.google.com/spreadsheets/d/1j8b2jZ7ZUzKpmoqoisFBVccDKw_CWDfWCGL_CcO2hCo/edit?usp=sharing
因此,“原始数据页面”上的列G需要从同一页面引用列E,根据“床翻译页面”翻译该床名,然后从“作业活动”中查找日期/时间信息列G中的详细信息页面为该翻译的床。由于数据的日常输入(我在每个列的INDEX:MATCH函数中手动更改搜索范围),因此我的当前工作簿中的床名重复超过100k次。
我希望有人可以为我阐明这一点,这已经是我近两年的存在的祸根了!感谢任何人可能提供的任何信息/帮助! :)
答案 0 :(得分:1)
好消息,你不需要这样!它从作业活动详细信息中提取G列,其中rawdata页面上的标识符等于作业活动详细信息上的标识符,并且在作业活动详细信息和入口详细信息门户上的名称相同,并且在J和M中有两次相同相应的表格匹配。
Option Explicit
Sub bd()
Dim rdsheet As Worksheet, jbsheet As Worksheet, btsheet As Worksheet
Dim bdstr, bdendrow, rng As Range, y, Key, GCell, BdCell
Set rdsheet = Sheets("Raw Data Page")
Set jbsheet = Sheets("Job Activity Detail")
Set btsheet = Sheets("Portal of Entry Detail")
bdstr = rdsheet.Range("G3").Address
bdendrow = rdsheet.Range("A3").End(xlDown).Row
Set rng = rdsheet.Range(bdstr & ":G" & bdendrow)
For Each y In rng
If IsEmpty(y) Then
Key = y.Offset(0, -2).Value
Key = Replace(Key, "-", "")
Set GCell = jbsheet.Range("A:A").Find(what:=Key, LookAt:=xlPart)
Set BdCell = btsheet.Range("B:B").Find(what:=y.Offset(0, -4).Value, LookAt:=xlPart)
If Not GCell Is Nothing And btsheet.Range("J" & BdCell.Row).Value = jbsheet.Range("M" & GCell.Row).Value Then
rdsheet.Range(y.Address) = jbsheet.Range("G" & GCell.Row)
End If
End If
Next y
End Sub
答案 1 :(得分:0)
{= INDEX('工作活动详情'!$ G $ 106463:$ G $ 106689,MATCH('原始数据页'!E15459& H15459,'工作活动详情& #39;!$ 106463澳元:$ 106689澳元'工作活动详情'!$ M $ 106463:$ M $ 106689,0))}查找值作为具有多个匹配条件的数组函数似乎工作!我很欣赏Lowpar的见解! :)