我使用的是 Excel 2010,有两个工作表。工作表 A 有一个唯一标识符列和其他带有值的列。工作表 B 有一个标识符列表和其他字段,我使用公式VLOOKUP
从工作表 A 中的值填充这些字段。
理想情况下,我想编辑工作表 B 上的值并让它们在工作表 A 上更新,但这似乎不可能 - 当我尝试这样做时,我只是=VLOOKUP
用原始数据覆盖我的公式。我说得对吗?没有办法做到这一点?
或者,是否有一个技巧可以点击或以某种方式自动从VLOOKUP
工作表 B 中包含公式的单元格跳转到工作表 A 中的原始单元格?
我的总体目标是保存工作表 A 中的所有原始值,并且仅从工作表 B 中引用这些值,而无需手动搜索工作表 A 来更新数据。
答案1
要实现您的替代请求,您可以将该HYPERLINK
函数与VLOOKUP
假设Sheet A
A 列包含 ID,B 列包含值,则替换VLOOKUP
为
=HYPERLINK("#'Sheet A'!B"&MATCH(A2,'Sheet A'!$A:$A,0),VLOOKUP(A2,'Sheet A'!$A:$B,2,0))
这不仅会VLOOKUP
像以前一样显示结果,而且当单击单元格时,还会超链接到 Sheet A 中找到的值。
答案2
您现在面临的主要问题是循环引用。
VLOOKUP 不是一种A = B
关系,而更像一种if A then B
关系(其中 A 和 B 是值数组,就像您的情况一样)。换句话说,它是单向的,A 不依赖于 B。据我所知,我认为 Excel 没有一种直接使用用户界面来处理循环引用的方法,因为公式不能存储在后端(除非您使用宏)。
一种方法是在 A 和 B 中都有相对值,并在第三张表(或许多额外列)中执行一些条件单元格,例如表 A 保存相对值(可能是 B 中的新更新值或 C 中的原始值),表 C 保存原始值,表 B 保存用于反映值和更新值的单元格。
在工作表 B 中,为每个引用的列创建一个新列。这将是更新值列。在工作表 C 中,存储您的原始值。在工作表 A 中,使用条件“如果工作表 B 中的更新值字段有值,则使用它,否则,引用工作表 C”。工作表 B 的反映值列仍将引用工作表 A,因此如果更新列有新值,它将动态更改。请注意,这并没有真正解决循环引用问题,而只是绕过它。
但是,如果您需要 Sheet A 为固定值而不是相对值,则必须复制或paste as value
使用类似以下内容:
ActiveSheet.Range("A1:D1000").Value = ActiveSheet.Range("A1:D1000").Value
在 VB 中将相对值(使用公式)转换为固定值。