我正在使用该VLOOKUP函数根据搜索查询在列中查找值。但是,由于我的搜索参数始终存在值并不是给定的,因此有时会VLOOKUP返回#N/A.
如何编写IF测试是否VLOOKUP返回的函数#N/A?
我读过某处#N/A只是一个文本字符串,所以我显然已经尝试过:
=IF(B1="#N/A";"Not found";B1)
Run Code Online (Sandbox Code Playgroud)
但没有运气。所以也许不是。
当您在 Excel 中创建表格时(我使用的是 Excel 2007),您可以为其指定一个显示在“名称管理器”对话框中的名称。但是,该名称具有工作簿范围。如果可能的话,我希望有一个名称范围仅限于工作表的表格(就像命名公式/范围一样)。是否可以?
例如,我想在几个不同的工作表上有一个名为“Notes”的表格。任何给定的表格只能从它实际所在的工作表中引用,我宁愿不必让每个工作表都有一个不同名称的表格。当我在“名称管理器”对话框中按范围排序时,我还希望能够看到与范围内的其他命名公式组合在一起的表名称。
有时,我通过将两个数据集并排粘贴在 Excel 中并在中间使用一个公式(如=A1=C1. 这将根据单元格是否完全匹配返回 true 或 false。当数据集缺少记录时,我只需插入一个新单元格并将现有单元格下移即可使它们重新排列。但是,当我这样做时,它会更新公式,将引用单元格向下移动我插入的单元格数量,如下所示:

这会导致问题,因为每次发生这种情况时,我都必须重做中间的所有公式。对于很长的数据集,这会变得非常乏味。有没有什么方法可以“锁定”比较列中的公式,这样它就不会关心我是否插入或删除单元格,它们将始终指向我设置的原始单元格?
顺便说一句,我知道 $A$1 将锁定引用,但只有当您移动该单元格而不是移动引用的单元格时,这才有效。如果您将其放在顶部并将它们向下拖动,则无论您拖动到哪一行,它们都将保持 $A$1(另外,在引用列中插入单元格后,它仍然会进行更新)。
假设我有一个结构有点像这样的电子表格
_A____B____C____D____E____F_____
1 |XFoo|XBar|YFoo|ZBar|XBaz|Result
2 |8 |3 |0 |1 |100 | (*)
3 |2 |1 |1 |20 |10 | (*)
Run Code Online (Sandbox Code Playgroud)
我想计算 A 到 E 列每行中所有单元格的总和,仅在那些列标题(第 1 行)以字母 X 为前缀的地方。
因此,F2 将计算为 A2+B2+E2=111,因为 A1、B1 和 E1 都以字母 X 开头。同样,F3 将是 13。
如何使用内置函数(无自定义脚本)在 Excel 公式中表达这一点?
多年来无数次,我一直想在 Excel/OpenOffice Calc 中以以下形式使用 If 语句:
If(A (comparison operator) B, A, C)
Run Code Online (Sandbox Code Playgroud)
或者,同样有用:
If(A (comparison operator) B, C, A)
Run Code Online (Sandbox Code Playgroud)
其中 A 是一个非常冗长且复杂的表达式,而 B 和 C 则简短而简单,通常(但不总是)只是一个字面值。我想要一种方法来执行其中一个不涉及重复 A 表达式的方法(这至少是丑陋的两倍,需要重复编辑,并引入了完全不必要的错误,这些错误甚至不会始终如一地表现出来),或者给 A专用单元格,或使用 VBA(这是 Microsoft 专有的,因此令人讨厌,而不是在 Calc 中)。
对于特殊情况,有一些解决方法,例如 Excel 中的 Iferr()(这不在 Calc 中),以及使用“条件”类型函数(如 Abs()、舍入和 Mod())处理数字。但是这些在大多数时候都不足以做我想做的事情(而且数字操纵也很不雅观,不清楚)。有没有可能有一个我错过的功能或简单的一系列功能可以做到这一点?离开似乎是一件大事。
我需要通过第一个分隔符(从右到左阅读)拆分一个单元格,以便我可以将该值放入另一个单元格中。
例如,我在单元格 A1 中的数据可能如下所示:
"something - more something - a lot more of something - (this is the text I need)"
Run Code Online (Sandbox Code Playgroud)
单元格 B1 需要值“(这是我需要的文本)”
到目前为止,我所拥有的是:
=RIGHT(a1,LEN(FIND(RIGHT("-"),a1)))
Run Code Online (Sandbox Code Playgroud)
但这似乎只返回最后一个字符:“)”。
我在 Excel 中有一列数字为 [0..100] 的数据。我需要一个新列,它将这些值映射到一组新值,例如:
我尝试使用VLOOKUP来执行此操作,特别是使用77和 函数调用的测试输入VLOOKUP(77, A10:B19, 2, TRUE),其中 A10 是此范围内的左上角元素:
99 4 90 4 89 3 80 3 79 2 70 2 69 2 60 1 59 0 0 0
但是,我得到的结果是#N/A. 根据文档,这是因为
...lookup_value 中的值小于 table_array 第一列中的最小值...
然而,情况显然并非如此,因为我传递的是 77。但是,如果我使用 的测试输入(79查找表中明确显示的值),我会得到正确的结果。
VLOOKUP 是错误的方法吗?进行此类映射的最佳方法是什么?
我应该提到,我的输入值和查找表都键入为“数字”。
windows-7 worksheet-function vlookup microsoft-excel microsoft-excel-2016
我有以下数据:
customer_id customer_name id date contract_value costs profit_extra_work
200027 Company A 00.161.559 08/07/2015 499.5 50.55 0
200027 Company A 00.161.566 08/07/2015 499.5 30 824.9
200027 Company A 00.188.852 04/04/2016 499.5 0 69.39
200027 Company A 00.190.078 30/05/2016 499.5 98.1 158.29
200027 Company A 00.190.291 14/04/2016 499.5 15 346.06
200027 Company A 00.222.221 12/05/2017 499.5 15 5.1
200027 Company A 00.222.229 12/05/2017 499.5 100.35 400.81
200027 Company A 00.161.561 08/07/2015 499.5 45 269.97
200027 Company A 00.185.058 18/02/2016 499.5 15 77.41 …Run Code Online (Sandbox Code Playgroud) 查看下图,我想从“geohash,latitude,longitude”列中提取纬度和经度。
我不能只使用该函数,RIGHT(C2,LEN(C2)-8)因为 Lats 和 Longs 的长度不同,我必须手动遍历整个列 E 添加已删除的任何数字。

例如,我有以下公式:
=SUMIF(G1:G25,E1,H1:H25)+SUMIF(G1:G25,E2,H1:H25)+SUMIF(G1:G25,E3,H1:H25)
Run Code Online (Sandbox Code Playgroud)
它是 3 个 SUMIF,它们都使用相同的条件和总和范围,该条件使用 3 个单元格都在同一范围内。
我希望能够将这个公式浓缩为如下所示:
=SUMIF(G1:G25,E1:E3,H1:H25)
Run Code Online (Sandbox Code Playgroud)
其中标准是单元格的范围。我试过了:
{=SUMIF(G1:G25,E1:E3,H1:H25)}
Run Code Online (Sandbox Code Playgroud)
&
=SUMIF(G1:G25,{E1:E3},H1:H25)
Run Code Online (Sandbox Code Playgroud)
&
=SUM(SUMIF(G1:G25,{E1:E3},H1:H25))
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这一目标?也许甚至与SUMPRODUCT?
此外,E1:E3如果可能的话,我想使用命名范围来代替范围,如果不只是一种压缩多个 SUMIF 的方法对我有用。