所以,我有一个相当复杂的工作簿。
工作表1:用户在垂直列中输入工具列表以及有关工具的一些数据的数据库。
工作表2 :包含与工作表1完全相同的信息但以不同格式显示的工作表。根据工作表1中的条目自动填充。(在此问题中无用)
在工作表1上存在一个通过单击按钮执行的宏。此宏从Sheet 1中获取每一列,并为每列创建一个新的Sheet。每张新工作表工作表3 都会重命名为它所代表的工作表1列中的第一个值。
每张新工作表上的第一个单元格(技术上为H2)包含一个引用工作表名称的公式。
=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255)
新工作表上的每个其他数据单元格将自动在主工作表(工作表1)上查找该值,以确定它来自哪个列。然后,它将低于该值并从下面的某些单元格x行中获取内容。
=LOOKUP(H2,'Database (Cols)'!D2:AN2,'Database (Cols)'!D3:AN3)
这绝对完美。它做得很好。
除了,并非总是如此。
然而,如果我将列重命名为“LS-TTF,LS-TTD,LS-TSD,LS-TSF”,它们都会以某种方式被破坏....没有链接在床单上工作了。如果他们甚至显示某些东西,他们中的一些指向错误的列。我遇到的这个问题令人难以置信。我不知道为什么这些名字特别打破它,我也不知道其他名字也会破坏它。
“中断”后会发生什么:所有引用似乎都找到了LOOKUP中的最后一个可用列。四张纸中的三张都不使用第四列中的值。然后,一张纸只给我错误(#N / A)。当我逐步完成计算时,它正在寻找LOOKUP函数中的正确值,它只是没有返回正确的东西....
如果没有向您展示正在发生的事情,我真的无法提供更多信息,所以我已经包含了一个有效的电子表格和一个破损的电子表格。工作表已从宏生成,因此您不必弄乱它。工作和损坏的文件如下:
工作:https://drive.google.com/file/d/0B9zbU-BeMQNfSmRrWVhKVW9RN3M/view?usp=drivesdk
破碎:https://drive.google.com/file/d/0B9zbU-BeMQNfd1FUemwxQjQwMEE/view?usp=drivesdk
注意,echo列用于调试目的。我试图看看他们是否都会显示回声而不是delta。显然,他们没有。
答案 0 :(得分:9)
来自LOOKUP function的帮助:
重要信息:lookup_vector中的值必须按升序排列 顺序:...,-2,-1,0,1,2,...,A-Z,FALSE,TRUE;否则,LOOKUP 可能无法返回正确的值。大写和小写文本是 等效。
正确工作的一组值 - " LS-A,LS-B,LS-C,LS-D" - 按字母顺序排列。一组不能正常工作的值 - " LS-TTF,LS-TTD,LS-TSD,LS-TSF" - 不按字母顺序排列。此外,LOOKUP并不一定能找到完全匹配 - 如帮助中所指定的那样:
如果LOOKUP函数找不到lookup_value,则该函数 匹配lookup_vector中小于或等于的最大值 到lookup_value。
要修复,请:
Range_lookup
参数为false,以确保完全匹配。示例用法:=HLOOKUP(H2,'Database (Cols)'!D2:AN3,2,FALSE)
答案 1 :(得分:0)
我有一个类似的问题,因为我错误地使用了查找。要在向量中查找值,我必须使用
=MATCH("KEY";F5:F48;0)
代替
=LOOKUP("KEY";F5:F48)
LOOKUP不能满足我的目标。