两个没有我需要匹配的唯一值的表和基于日期范围和邮政编码字段的 return 值
Two tables with no unique values that I need to match and return value based on date range and zipcode fields
我有两组数据;第一个 (Wind Claims) 包含 StartDate、EndDate 和 Zip Code 字段。第二个 (PLRB Wind) 包含日期、邮政编码和风速字段。
如果 PLRB Wind 选项卡中的日期介于 Wind Claims 选项卡上的 StartDate 和 EndDate 以及 PLRB Wind 中的邮政编码之间,我的目标是将 PLRB Wind 选项卡中的风速获取到 Wind Claims 选项卡选项卡与 Wind Claims 选项卡上的邮政编码匹配。重点是确定报告损坏的风速。
我试过几个公式;这个我实际上得到了结果,但在 16822 个结果中只有 1227 个。我不希望有 100% 的匹配,但肯定比我得到的要多得多。我认为原因是因为这个公式正在寻找特定日期而不是查看日期范围:
=XLOOKUP(Z2&N2,'PLRB Wind'!$I:$I525&'PLRB Wind'!$D:$D525,'PLRB Wind'!$M:$M525,"")
我也尝试了索引匹配(这只是公式的匹配部分)
=MATCH(1,IF('PLRB Wind'!D2>=$B:$B823,IF('PLRB Wind'!D2<='Wind Claims'!$C:$C823,IF('PLRB Wind'!I2='Wind Claims'!$Z:$Z823,1))),0)
提前感谢您查看本文。感谢您提供的任何帮助!
我会为此使用电源查询。你知道什么是权力查询吗?当我发现之前我可以使用它的所有有用方法时,我感到很沮丧。
不过,您可能会有不同的感觉。为此创建一个新的工作簿副本,以防万一您讨厌它。 :-)
在 Excel 的“数据”功能区中,在“获取和转换”部分中,有一个“来自 Table”按钮。突出显示您的 PLRB table(包括列标题)并单击“来自 Table”按钮以从中创建一个新查询。它将创建 table 和查询。
一个强大的查询编辑器 window 将弹出,将您的查询分为两个步骤,列在右侧边栏的中间。第一步是从工作表中获取信息。第二步更改数据类型。单击每个日期列标题左侧的图标,将类型从日期时间更改为日期,因为为什么不呢。在右侧栏中,将查询名称更改为 PLRB
.
现在单击主页功能区上的“关闭并加载”。它将创建一个包含 table 结果的新选项卡。暂时离开它。您可以稍后删除该选项卡,它不会删除查询。
因此,回到您的工作表,突出显示 column-title 行和风声明前三列的数据行 table。从 table 创建另一个查询。称之为WindClaimsInput
。再次,将日期时间列更正为日期列
好的,现在您有两个问题。它们都从您的工作簿中读取,但它们可能来自另一个文件或文本文件等。如果您喜欢这个解决方案,那么您的最终表单可能是一个实际上没有任何源数据的工作表,只是查询获取来自其他地方的原始数据和一个显示我们将要进行的第三个查询的选项卡。
现在是有趣的部分。
虽然仍在高级查询编辑器中编辑您的 WindClaimsInput
查询,但在“主页”功能区的左边缘附近有一个名为“管理...”的按钮。单击它,然后单击“引用”以创建以旧查询开头的第三个查询。请记住,查询只是指令。在我们 运行 查询之前,我们不会复制数据。
现在,找到添加列的按钮。它应该打开一个对话框询问列名和公式。将其命名为“PLRB”并使用此公式:Table.SelectRows(PLRB, (r) => (r[Date] >= [CATFromDt] and r[Date] <= [CATThruDt] and r[ZipCode] = [ClaimZip]))
Table.SelectRows 是一个具有两个参数的幂查询函数:
- table(或查询return是table),并且,
- 运行 在 table 和 return true/false 的每条记录(又名行)上的函数。在这种情况下,我们创建了一个函数,它接受一个参数 (r) 和 returns true 或 false。
所以上面的公式说“给我一个 table PLRB 中所有行的给定 ClaimZip 邮政编码,它也有一个介于 CATFromDt 和 CATThruDt 之间的日期。”由于它是列公式,因此每行一次 运行s。Wind Claims。
现在您有一个 table,其中最后一列是另一个 table!具体来说,PLRB 中与 Wind 索赔行相关的行。您可以在最后一列中的任何这些单元格上 single-click 来查看子 table.
最后一列标题的右侧将有一个“展开”小图标。点击它,选择按最大风速聚合。 (“风速”选项的右边缘可以让您将其更改为最大、平均或您喜欢的任何值。)取消单击“使用原始列名称作为前缀”。点击确定。别担心,如果我描述的不好,你可以删除这个新步骤,然后再试一次。
点击“关闭并加载”以在您的工作簿中查看它。如果看起来不错,那就太好了!否则,请随时返回并编辑更多内容。
现在大功告成!与公式不同,它不会自动刷新,但是当您想根据输入 tables 刷新输出时,您可以刷新该查询,或者在“数据”功能区中单击“全部刷新”。
在 Excel 的数据功能区中,在“获取和转换”部分中,有一个“显示查询”按钮可以切换显示您所做查询的侧边栏。您可能只想继续加载第三个查询,因此您可以将其他两个查询的“加载到...”更改为“仅连接”。
抱歉,我现在不能截图。
我有两组数据;第一个 (Wind Claims) 包含 StartDate、EndDate 和 Zip Code 字段。第二个 (PLRB Wind) 包含日期、邮政编码和风速字段。
如果 PLRB Wind 选项卡中的日期介于 Wind Claims 选项卡上的 StartDate 和 EndDate 以及 PLRB Wind 中的邮政编码之间,我的目标是将 PLRB Wind 选项卡中的风速获取到 Wind Claims 选项卡选项卡与 Wind Claims 选项卡上的邮政编码匹配。重点是确定报告损坏的风速。
我试过几个公式;这个我实际上得到了结果,但在 16822 个结果中只有 1227 个。我不希望有 100% 的匹配,但肯定比我得到的要多得多。我认为原因是因为这个公式正在寻找特定日期而不是查看日期范围:
=XLOOKUP(Z2&N2,'PLRB Wind'!$I:$I525&'PLRB Wind'!$D:$D525,'PLRB Wind'!$M:$M525,"")
我也尝试了索引匹配(这只是公式的匹配部分)
=MATCH(1,IF('PLRB Wind'!D2>=$B:$B823,IF('PLRB Wind'!D2<='Wind Claims'!$C:$C823,IF('PLRB Wind'!I2='Wind Claims'!$Z:$Z823,1))),0)
提前感谢您查看本文。感谢您提供的任何帮助!
我会为此使用电源查询。你知道什么是权力查询吗?当我发现之前我可以使用它的所有有用方法时,我感到很沮丧。
不过,您可能会有不同的感觉。为此创建一个新的工作簿副本,以防万一您讨厌它。 :-)
在 Excel 的“数据”功能区中,在“获取和转换”部分中,有一个“来自 Table”按钮。突出显示您的 PLRB table(包括列标题)并单击“来自 Table”按钮以从中创建一个新查询。它将创建 table 和查询。
一个强大的查询编辑器 window 将弹出,将您的查询分为两个步骤,列在右侧边栏的中间。第一步是从工作表中获取信息。第二步更改数据类型。单击每个日期列标题左侧的图标,将类型从日期时间更改为日期,因为为什么不呢。在右侧栏中,将查询名称更改为 PLRB
.
现在单击主页功能区上的“关闭并加载”。它将创建一个包含 table 结果的新选项卡。暂时离开它。您可以稍后删除该选项卡,它不会删除查询。
因此,回到您的工作表,突出显示 column-title 行和风声明前三列的数据行 table。从 table 创建另一个查询。称之为WindClaimsInput
。再次,将日期时间列更正为日期列
好的,现在您有两个问题。它们都从您的工作簿中读取,但它们可能来自另一个文件或文本文件等。如果您喜欢这个解决方案,那么您的最终表单可能是一个实际上没有任何源数据的工作表,只是查询获取来自其他地方的原始数据和一个显示我们将要进行的第三个查询的选项卡。
现在是有趣的部分。
虽然仍在高级查询编辑器中编辑您的 WindClaimsInput
查询,但在“主页”功能区的左边缘附近有一个名为“管理...”的按钮。单击它,然后单击“引用”以创建以旧查询开头的第三个查询。请记住,查询只是指令。在我们 运行 查询之前,我们不会复制数据。
现在,找到添加列的按钮。它应该打开一个对话框询问列名和公式。将其命名为“PLRB”并使用此公式:Table.SelectRows(PLRB, (r) => (r[Date] >= [CATFromDt] and r[Date] <= [CATThruDt] and r[ZipCode] = [ClaimZip]))
Table.SelectRows 是一个具有两个参数的幂查询函数:
- table(或查询return是table),并且,
- 运行 在 table 和 return true/false 的每条记录(又名行)上的函数。在这种情况下,我们创建了一个函数,它接受一个参数 (r) 和 returns true 或 false。
所以上面的公式说“给我一个 table PLRB 中所有行的给定 ClaimZip 邮政编码,它也有一个介于 CATFromDt 和 CATThruDt 之间的日期。”由于它是列公式,因此每行一次 运行s。Wind Claims。
现在您有一个 table,其中最后一列是另一个 table!具体来说,PLRB 中与 Wind 索赔行相关的行。您可以在最后一列中的任何这些单元格上 single-click 来查看子 table.
最后一列标题的右侧将有一个“展开”小图标。点击它,选择按最大风速聚合。 (“风速”选项的右边缘可以让您将其更改为最大、平均或您喜欢的任何值。)取消单击“使用原始列名称作为前缀”。点击确定。别担心,如果我描述的不好,你可以删除这个新步骤,然后再试一次。
点击“关闭并加载”以在您的工作簿中查看它。如果看起来不错,那就太好了!否则,请随时返回并编辑更多内容。
现在大功告成!与公式不同,它不会自动刷新,但是当您想根据输入 tables 刷新输出时,您可以刷新该查询,或者在“数据”功能区中单击“全部刷新”。
在 Excel 的数据功能区中,在“获取和转换”部分中,有一个“显示查询”按钮可以切换显示您所做查询的侧边栏。您可能只想继续加载第三个查询,因此您可以将其他两个查询的“加载到...”更改为“仅连接”。
抱歉,我现在不能截图。