![VLOOKUP,如果存在则使用其他值](https://linux22.com/image/1586961/VLOOKUP%EF%BC%8C%E5%A6%82%E6%9E%9C%E5%AD%98%E5%9C%A8%E5%88%99%E4%BD%BF%E7%94%A8%E5%85%B6%E4%BB%96%E5%80%BC.png)
答案1
所以这个想法似乎是你想要一个尚未预订的房间列表。从中你可以按照一些有用的标准选择一个。
我会采取与你尝试的方法不同的方法。我会:
在某处创建一个所有可用房间的列表。可能是简单的 1-100,也可能更复杂。在辅助表的表格中创建它,您可以将其隐藏或不隐藏。将其创建为命名范围,这样既方便又不被用户看到,也容易“弄乱”。
拿起它并删除已提交列中的房间(Sheet1 上的“房间”)。
选择一种方法来决定提交剩余的哪个房间。
接下来,我在 C1:C12 中创建了 1-12 号房间的列表。已提交的房间列表位于 A1:A4 中。您可以根据需要更改这些范围:使用您创建的所有房间的列表和 Sheet1 上的“房间”列。然后,我将“存在”列表上的每个房间与“已提交”列表中的房间进行比较。
最内层是IF()
进行比较。它""
的结果为 TRUE(已提交)房间。我给出了 FALSE 的结果,但事实上,这并不重要,如果一年后您想要更新电子表格时缺少的参数不会让人感到困惑,则可以省略。很多人会觉得这很令人困惑,所以我把它放进去了。但有些人会觉得这很令人困惑,所以“随心所欲地调味”。
之所以不重要,是因为测试将对尚未提交的房间产生错误并停止,永远不会得到 FALSE 结果。您实际上想要所有产生错误的房间。因此,我将其包装起来以IFERROR()
捕获它们并为其提供一些有用的结果:无论正在测试什么值。因此,所有这些都会给您一堆空白和一堆未提交的房间。
我过去常常UNIQUE()
将空白的数量减少到 1。所以现在你有一份未预订房间的列表和一个空白。如果你没有UNIQUE()
(这个问题是 2019 年的,发帖人可能有也可能没有,但任何拥有早期版本的人都不会有),你可以执行以下步骤,只是略有不同。
接下来,我SORT()
使用 -ed 命令对结果进行排序。如果这无关紧要,则不需要这样做,如果您的“存在”房间列表从一开始就是按顺序排列的,则不需要这样做。但它确实将空白放在最后。如果您SORT()
因为没有该功能而无法这样做,则空白将放在第一位。将它放在最后让我可以选择第一个“除一个房间外的所有房间”,INDEX()
这样空白就消失了。这比选择最后一个“除一个房间外的所有房间”来删除它更容易。更容易理解。这并不是特别难做到,但更复杂,因此一年后更难跟进。
如果您无法将空白减少到 1,那么不要像COUNTA()
我一样对结果进行计算并从中减去 1,而是COUNTA()
对结果进行计算并从中减去COUNTA()
“已提交”的房间数。
由于我只希望将单列输入作为单列结果,因此INDEX()
有时在 中对列参数使用“1”并不是绝对必要的。如果像我在这里所做的那样使用 的形式ROW(1:xxx)
(因为……2019 年等等),则不需要。但如果您今天这样做并使用了 nice 函数SEQUENCE()
,那么肯定会需要它。无论出于何种原因,如果将其用作 中的值INDEX()
,通常必须指定另一个值,无论这是否有意义。
所以无论如何,您现在有一个有序的(无论如何)尚未“承诺”的房间列表。您可以使用行和列选择另一个INDEX()
包裹在其上的列表,或者使用“1”和一个公式来计算剩余的未“承诺”的房间。也许只是选择编号最小的未“承诺”房间。或者……好吧,你明白了。有很多方法。如果随机化房间使用很重要,则使用某种适当的方式进行随机化,或者如果不重要,则采取简单的方法。无论哪种想法对您来说都是最好的。您甚至可以在“存在”房间的列表中以某种非连续的方式对它们进行排序。有很多方法可以做到这一点。,1,1
RANDBETWEEN()
MIN()
RANDBETWEEN()
MIN()