在 Excel 中,我有一份行政单位列表,需要找出组成行政单位的税务区之间的重叠关系。AI 列中有行政单位,BI 列中有税务区。我正在处理超过 10,000 个税务区。
给定一个行政单位(A 列),我可以轻松返回组成该行政单位的税区列表(B 列)。但是,我还需要确定给定税区属于哪个其他行政单位。例如:在 A 列中选择一个行政单位后,将返回 B 列中的税区列表,如何在 A 列中找到与这些税区相关的其他行政单位?
+-------------------------+--------------+
| Administrative unit | Tax District |
+-------------------------+--------------+
| Columbiana County | Butler |
| Columbiana County | Center |
| Columbiana County | Elkrun |
| East Liverpool City | Butler |
| East Liverpool City | Center |
| Salem City | Elkrun |
| Crestview Schools | Butler |
| Crestview Schools | Center |
| United Local Schools | Elkrun |
| East Columbiana Library | Butler |
| East Columbiana Library | Elkrun |
| West Columbiana Library | Center |
+-------------------------+--------------+
例如,所有学校都与县重叠,因为 3 个税区也都属于该县。但是,Crestview 学校与 East Liverpool City 重叠,因为与 Butler 和 Center 有关联。Crestview 学校与 Salem City 不重叠,因为 Butler 和 Center 不属于 Salem City。
克雷斯特维尤学校的两个图书馆将有重叠:东哥伦比亚纳(因为巴特勒)和西哥伦比亚纳(因为中心)。
答案1
如果我正确理解了您的目标,您可以使用该LET()
函数来实现这一点。假设您的数据存储在范围内A1:B13
,并且暂时是硬编码的查找值,可以简单地将其更改为下拉列表所在的单元格。该过程如下:
=LET(
admin_lookup, "Crestview Schools",
data, A2:B13,
tax_filtered, FILTER(INDEX(data,, 2), INDEX(data,, 1) = admin_lookup),
admin_filtered, UNIQUE(FILTER(INDEX(data,, 1), ISNUMBER(MATCH(INDEX(data,, 2), tax_filtered, 0)))),
result, FILTER(admin_filtered, admin_filtered <> admin_lookup),
result
)
首先,您初始化 admin_lookup 值,例如“Crestview School”。然后您初始化数据范围,从那里开始,所有内容都指向这些方面,使其动态化。基于 admin_lookup 值,您首先要过滤相应的 tax_districts,然后将其作为输入来过滤具有此 tax_district 的 admin_units。鉴于 tax_districts 不是单个值而是一个数组,您可以组合ISNUMBER()
和MATCH()
函数以正确过滤整个数组。最后,您还要过滤掉 admin_lookup 值,这样它就只是与其交互的 admin_units 列表,然后返回结果。
对于三个示例,输出如下所示:
哥伦比亚纳县 | 克雷斯特维尤学校 | 塞勒姆市 |
---|---|---|
东利物浦市 | 哥伦比亚纳县 | 哥伦比亚纳县 |
塞勒姆市 | 东利物浦市 | 联合地方学校 |
克雷斯特维尤学校 | 东哥伦比亚纳图书馆 | 东哥伦比亚纳图书馆 |
联合地方学校 | 西哥伦比亚纳图书馆 | |
东哥伦比亚纳图书馆 | ||
西哥伦比亚纳图书馆 |
扩展 1:
如果您希望将其作为逗号分隔的列表返回,则可以TEXTJOIN()
按如下方式包含该函数(替换结果的当前过滤语句):
result, TEXTJOIN(", ", TRUE, FILTER(admin_filtered, admin_filtered <> admin_lookup)),
“Crestview Schools” 的结果将如下所示:
Columbiana County, East Liverpool City, East Columbiana Library,
West Columbiana Library
扩展 2:
如果您不仅想返回最终过滤的 admin_units,还想返回中间过滤的 tax_districts,则可以在语句末尾包含该HSTACK()
函数组合(以避免“#N/A”值) 。IFERROR()
LET()
IFERROR(HSTACK(tax_filtered;result);"")
“Crestview Schools” 的结果将如下所示:
克雷斯特维尤学校 | |
---|---|
巴特勒 | 哥伦比亚纳县 |
中心 | 东利物浦市 |
东哥伦比亚纳图书馆 | |
西哥伦比亚纳图书馆 |