不使用宏编译不同的Excel工作表
我有4张不同的表格,数据相似,但格式不同。例如: 活页A不使用宏编译不同的Excel工作表,excel,excel-formula,vlookup,Excel,Excel Formula,Vlookup,我有4张不同的表格,数据相似,但格式不同。例如: 活页A Date Buy-In Game Winnings 11/25/2013 $10 NFL $18 11/28/2013 $10 NBA $0 活页B Sport Buy-In Date Winnings NFL $5 11/26/2013 $9 NBA $2
Date Buy-In Game Winnings
11/25/2013 $10 NFL $18
11/28/2013 $10 NBA $0
活页B
Sport Buy-In Date Winnings
NFL $5 11/26/2013 $9
NBA $2 11/29/2013 $3.60
活页C
Buy-In Game Date Winnings
$5 NFL 11/24/2013 $9
$2 NFL 11/21/2013 $3.60
活页D
Sport Buy-In Date Winnings
NFL $5 11/20/2013 $9
NBA $2 11/22/2013 $3.60
我想在不使用宏的情况下将它们组合成一张表。因此,组合的表将如下所示:
组合表
Game Date Buy-In Winnings
NFL 11/20/2013 $5 $9
NFL 11/21/2013 $2 $3.60
NBA 11/22/2013 $2 $3.60
NFL 11/24/2013 $5 $9
NFL 11/25/2013 $10 $18
NFL 11/26/2013 $5 $9
NBA 11/28/2013 $10 $0
NBA 11/29/2013 $2 $3.60
这是可行的还是可能的?您可以使用
间接
功能和支持表来实现这一点
首先,您需要构建一个小的支持表,用于保存每个输入工作表的参数:
- 在B列中,使用以下公式确定行数:
李>=COUNTA(间接(“&A5&”!A:A”)-1
- 对于C5:F8范围,我使用了公式
-这将适用于所有具有“正确”列名的列-只需手动输入C6和C8,因为这里使用的是“运动”而不是“游戏”=MATCH(C$4,间接(““&$A5&”!1:1”),0)
- H列:
逻辑:从1开始,每次行Id重置为1时增加1-否则从上方保留工作表Id=IF(ISTEXT(H4),1,IF(I5=1,H4+1,H4))
- 第I列:
逻辑:从1开始,增加1,直到上行中的行ID等于表中从上到下的行数。在这种情况下,请在1重新启动=IF(ISTEXT(I4),1,IF(I4=J4,1,I4+1))
- J列:
-从配置表中获取当前工作表的行数=索引($B$5:$B$8,H5)
- 第K列:N:
-这就是神奇发生的地方!;-)逻辑:从配置表中获取工作表名称,在间接函数中使用该名称从该工作表中检索单元格A1。然后通过支持列的行ID和从配置表中再次检索到的该工作表的列ID进行偏移=偏移量(间接(“'”和索引($A$5:$A$8,$H5)和“!A1”),$I5,索引(C$5:C$8,$H5)-1)
- J列:
请参见中实现的示例 宏更适合于此是的,不幸的是,目标是让多个用户尽可能地访问它。我希望不用宏也能做到,因为不是每个用户都能使用宏。但是,如果宏是唯一的方法,我想这就是我必须要做的。你可以参考其他工作表中的数据并对其进行排序。你能使用Power Query吗?Power Query具有简单的合并/追加功能,最终结果是最终数据位于工作表的表中。我将在组合的工作表上创建4个部分,每个源工作表1个。然后添加一个指示符列,用于区分有用行和“空”(
LEN(..)=0
)行。现在找到下一个有用的部分(例如,组合IF
和MATCH
),然后找到该部分中有用的行(相同的方式),并使用OFFSET
函数检索数据。无论何时你做了什么,请创建一个新的问题或更新这个问题。这是惊人的!非常感谢你@充满问题:不客气!:-)