基于数据库的表,手动添加列 – 维护值位置
让我们考虑与SQL Server表关联的简单Excel表格:
ID some_data 0 a 1 b 2 c
我想扩展它与手动添加列(不存在于SQL Server的表中):
ID some_data my_column 0 a some_data_for_0 1 b some_data_for_1 2 c some_data_for_2
但是,当源数据发生更改(行插入/删除/更新)时,my_column和ID列之间的关系不会保留。 例如,添加新行(3,d)时:
ID some_data my_column 0 a some_data_for_0 1 b some_data_for_1 2 c 3 d some_data_for_2
有没有任何Excel内置的解决scheme,可以让我指定如何sortingmy_column行与ID列有关,还是我需要自己使用VBA实现它?
你可以在你的SQL语句中使用ORDER BY子句,但即使这样也不是很可靠。 唯一可行的方法是将附加数据存储在自己的表中,并使用公式将其与SQL数据关联起来。
在一个单独的工作表上,放
ID my_column 0 some_data_for_0 1 some_data_for_1 2 some_data_for_2
现在在与SQL数据相邻的列中,放置
=IFERROR(VLOOKUP([@ID],tblAddtlInfo,2,FALSE),"")
但是,SQL数据是sorting的,附加信息将在右侧的行。 这假定你把你的附加信息列表放到一个表中,并命名为tblAddtlInfo。
如果你想变得奇特,你可以在Change事件中写一些代码,在额外的列中寻找非公式。 如果公式被写入,那么获取新数据,将其添加到(或更新)您的附加信息表,然后恢复公式。 然后,您可以键入行中的数据,但通过将其移动到不同的表保持完整性。