所以不确定从哪里开始,所以我只是把它转移到那里并要求指示。
我有一本不少于40张工作单的工作簿。 在我的原始(姓名)表格中,我有3列城市,日期和#34;要填写"
在接下来的~30张纸上,我有2列城市,价值(这些纸张中的每一张都是按月份的日期命名的......(1,2,3,4,等等)
我需要把"值"从表1 - 30到列#34;填写"基于城市匹配和与工作表日匹配的日期列日。
举个例子: 原始表包含:
City Date "to be filled in"
C1 01012000 (missing)
C1 01032000 (missing)
C2 01012000 (missing)
C2 01022000 (missing)
C3 01012000 (missing)
Sheets 1-30 look like so:
Sheet 1 has:
City Value
C1 5
C2 3
C3 1
Sheet 2 has:
City Value
C1 3
C2 10
C3 9
Sheet 3 has:
City Value
C1 1
C2 2
C3 2
因此,在运行VBA代码后,我的原始工作表应如下所示: 原始表现在包含:
City Date "to be filled in"
C1 01012000 5
C1 01032000 1
C2 01012000 3
C2 01022000 10
C3 01012000 1
所以我需要根据日期列中的日期搜索工作表,在原始工作表中查找城市,一旦我在正确的选项卡上找到城市,我需要拉回该工作表/行中的值并填充原始工作表上的缺失数据。
我想使用VBA来做。它有点像vlookup,但不是,所以我有点难过。
感谢您的任何建议。
答案 0 :(得分:0)
你真的不需要VBA。 Excel的神奇公式将起作用 此公式将首先使用以下公式提取日期/工作表编号:
x
然后将它连接到" Sheet"创建工作表名称。
IF(LEFT(MID(B2,IF(LEN(B2)=8,3,2),2),1)="0",RIGHT(MID(B2,IF(LEN(B2)=8,3,2),2),1),MID(B2,IF(LEN(B2)=8,3,2),2))
然后使用vlookup查找值。
= VLOOKUP(A2,间接(CONCATENATE(" Sheet",IF(LEFT(MID(B2,IF(LEN(B2)= 8,3,2),2),1)=& #34; 0&#34 ;, RIGHT(MID(B2,IF(LEN(B2)= 8,3,2),2),1),MID(B2,IF(LEN(B2)= 8,3,2),2)), "!A:B"),TRUE),2,FALSE)
如果您的日期采用 CONCATENATE("Sheet",IF(LEFT(MID(B2,IF(LEN(B2)=8,3,2),2),1)="0",RIGHT(MID(B2,IF(LEN(B2)=8,3,2),2),1),MID(B2,IF(LEN(B2)=8,3,2),2)), "!A:B")
格式而不是 1/1/2000
,请使用此公式。
= VLOOKUP(A2,间接(CONCATENATE(" Sheet",IF(LEFT(TEXT(B2," dd"),1)=" 0" , RIGHT(TEXT(B2," dd"),1),TEXT(B2," dd")),"!A:B"),TRUE), 2,FALSE)
只需将此公式放在单元格C2中并将其向下拖动。
你会得到这样的结果。
01012000