根据第1张wk表格中的日期搜索seperat特定的wk表

时间:2015-09-25 18:10:00

标签: excel vba excel-vba

所以不确定从哪里开始,所以我只是把它转移到那里并要求指示。

我有一本不少于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,但不是,所以我有点难过。

感谢您的任何建议。

1 个答案:

答案 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