Excel公式比较两个数组

标签 excel excel-formula excel-2010 vba

我有一个表(xTable,3 列:名称、开始、停止)。在另一张纸上我有一个我正在尝试制作的日历。 A1 行是日期。 A1 列是名称。

我正在尝试将 xTable 中的开始日期与 A1 行中的日期进行比较。如果找到日期,则查看 xTable 的第一列,如果等于 A1 列中的人名,则返回 true,否则返回 false。

类似于:=INDEX($B$2:$AF$14,ROW(A2)-1,MATCH($B$16,$B$1:$AF$1,0))="x"

但是对于我的一生,我无法让它工作...我在想也许是因为我有大约 400 行数据,但我只是不确定。任何帮助表示赞赏!另外,如果你知道 vba 解决方案,我总是可以使用它......但我更喜欢尝试将其保留在公式中。但乞丐不应该挑剔;)

     | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |etc---> 
Name1|____|____|____|____|____|____|____|____|____|____|____|____|
Name2|____|____|____|____|____|____|____|____|____|____|____|____|
Name3|____|____|____|____|____|____|____|____|____|____|____|____|
Name4|____|____|____|____|____|____|____|____|____|____|____|____|
Name5|____|____|____|____|____|____|____|____|____|____|____|____|
Name6|____|____|____|____|____|____|____|____|____|____|____|____|
Name7|____|____|____|____|____|____|____|____|____|____|____|____|
Name8|____|____|____|____|____|____|____|____|____|____|____|____|
Name9|____|____|____|____|____|____|____|____|____|____|____|____|


Name |Start|Stop |
Name1| 3   |  6  |
Name1| 1   |  12 |
Name7| 10  |  10 |
Name3| 21  |  30 |
Name1| 9   |  12 |
Name9| 7   |  15 |
Name9| 1   |  3  |

最佳答案

如果我理解正确,您希望使用 xTable 中的开始日期填充日历,找到时使用 TRUE,否则使用 FALSE

您可以在单元格 B2 中使用此公式并向右和向下填充:

=IF(COUNTIFS($A$13:$A$19,$A2,$B$13:$B$19,B$1*1)=0,FALSE,TRUE)

我使用 B$1*1 以防万一您将日期存储为 A1 行中的数字。否则,如果它们存储为日期但格式为 dd(或等效格式),请改用 DAY(B$1)

该公式将使用 COUNTIFS 计算表 xTable 中具有相应名称和开始日期的行的出现次数。如果没有找到,它将返回 0,即 FALSE

关于Excel公式比较两个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18556361/

相关文章:

VBA Excel UDF保留原始值

vba - Application.OnTime 未执行

excel - Vlookup多个表

excel - 如何从这个计算平均价格的简单 Excel 公式中排除特定行(基于单元格值)?

vba - 将命令行过程的输出定向到 Excel

excel - 将来自多个工作表的数据与可变工作表名称组合在一起

excel - MMULT 行向量之间的点积在 Excel 中不起作用

arrays - Excel VBA(不是 VBScript)101 : How do I create and read a multidimensional array?

VBA通过左/右移动找到一行中出现的第一个空单元格

excel - 如何根据名称和 ID 在 C 列中计算 "No"?