【问题标题】:Find match and copy data查找匹配并复制数据
【发布时间】:2021-10-16 02:58:43
【问题描述】:

我有以下(sheet1):

State           Region
South Australia Aberfoyle Park
New South Wales Abermain
South Australia Adelaide

然后(sheet2):

State           Region          Long       Lat
Victoria        Abermain        -12.8167   51.4333
New South Wales Abermain        -32.8167   151.4333
South Australia Aberfoyle Park  -35.07     138.5885

我需要一种有效的方法来搜索 sheet1 并匹配 sheet2 中的 RegionState,当找到匹配项时,我想创建两个新列(在 sheet1 中)复制从sheet2 匹配的LongLat,最终输出应如下所示(在sheet1 中):

State           Region          Long       Lat
South Australia Aberfoyle Park  -35.07     138.5885
New South Wales Abermain        -32.8167   151.4333

注意; sheet1 包含更多此处显示的数据,因此简单的复制过去将不起作用:)

提前致谢。

【问题讨论】:

  • 到目前为止,您尝试了什么?在分享您的方法并要求审查时,您更有可能获得帮助。 编辑开始,研究 MATCH 函数并在 Excel 中试验宏记录器。
  • 感谢反馈nhee,我最初的方法是使用IFSMATCH 的组合,不幸的是这很混乱,我求助于专家寻求指导。将来,我将确保首先发布我的最大努力。干杯。

标签: excel vba


【解决方案1】:

在 Sheet1!C2 中,您可以通过多种方式从两列匹配的记录中收集正确的数据。以下是三个场景和示例。

  1. 在基于INDEX function 的查找中使用两列条件。有 array 公式可以做到这一点,但我更喜欢不需要 CSE 的标准公式。这些仅获取匹配的状态/区域对的第一次出现,但可以进行较小的重写以将多个匹配项返回到多行中。 C2 示例:
    =iferror(index(Sheet2!C$1:C$9999, min(index(row($1:$9999)+((Sheet2!$A$1:$A$9999<>$A2)+(Sheet2!$B$1:$B$9999<>$B2))*1e99, , ))), "")
  2. 使用简单的SUMIFS function。当只有一组匹配的州/地区要返回时,这将最有效。多个匹配对会产生不正确的聚合结果。 C2 示例:
    =sumifs(Sheet2!C:C, Sheet2!$A:$A, $A2, Sheet2!$B:$B, $B2)
  3. 如果有多个匹配对并且您希望从地理点的平均值返回平均值,请使用AVERAGEIFS function。这在有多个位置点时效果最好,但永远不会返回任何一个点,除非只有一组匹配的状态/区域要返回。 C2 示例:
    =averageifs(Sheet2!C:C, Sheet2!$A:$A, $A2, Sheet2!$B:$B, $B2)

将这些示例中的任何一个放入 Sheet1!C2 作为纬度后,向右填充一列以获取经度,然后向下填充 C2:D2 以获取所有匹配项。

【讨论】:

  • 吉普车再次来袭!谢谢你,先生。最终使用 SUMIFS 函数,按规定工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-18
  • 2021-12-26
相关资源
最近更新 更多