Excel数据表如何查找多个值并填充数据对于的数值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Excel数据表如何查找多个值并填充数据对于的数值?相关的知识,希望对你有一定的参考价值。

Excel数据表如何查找多个值并填充数据对于的数值,如我图片上的A店铺,如何匹配店铺名称及日期的情况下自动填充上面一个统计表各项数值到下面汇总表格对应的单元格里,感谢大神们的帮助@_@

你这个表肯定下边还有很多。
只能简单的提示你一下,可以根据需求使用SUMIFS或者COUNGTIFS这种多条件判断语句来实现。
毕竟不好具体给出你公式,需要的话可以丝信我。追问

我的条件值是在两个分开的位置,所以SUMIFS是用不了的,coungtifs这个不熟悉

参考技术A

    B22=SUMPRODUCT(($A$2:$A$18=$A$22)*($B$2:$B$18=$B$20),INDEX($A$2:$M$18,,MATCH(B$21,$A$1:$M$1,)))公式往右拉到h22,

    I22=SUMPRODUCT(($A$2:$A$18=$A$22)*($B$2:$B$18=$B$20),INDEX($A$2:$M$18,,MATCH(I$21,$A$1:$M$1,)))/SUMPRODUCT(($A$2:$A$18=$A$22)*($B$2:$B$18=$B$20),$K$2:$K$18+$L$2:$L$18+$M$2:$M$18)公式右拉至K22

追问

公式用了,得出来的值不对,而且好像缺少了两项公式的数据

参考技术B B22=SUMPRODUCT(($B$2:$B$11=$C$20)*($A$2:$A$11=$A22)*(E$2:E$11))
右拉,下拉公式追问

我试过了,数据填充下来是0

追答

B22=SUMPRODUCT(($B$2:$B$11=$C$20)*($A$2:$A$11=$A22)*(D$2:D$11))

Excel:查找所有匹配值并放在逗号分隔列表中?

【中文标题】Excel:查找所有匹配值并放在逗号分隔列表中?【英文标题】:Excel: Lookup All Matching Values and place in comma separated list? 【发布时间】:2017-06-18 01:27:45 【问题描述】:

我有一个这样的数据表:

Col A    Col B    Col C    Column D   Col E   Column F     Col G    Col H      Col  I    Col J     Col K    
                           1234               Supplier 1
                           2222               Supplier 2
                           3333               Supplier 2
                           4444               Supplier 1

我还有一张纸

Home sheet:

Column B
Supplier 1   <-- Values Produced From Index Match Formula
Supplier 2

我想列出 D 列数据表中的所有项目编号,其中主页表上的供应商名称匹配。

但是,我想将所有匹配的项目编号放在一个单元格中,在一个逗号分隔的列表中,如下所示:

Home sheet:    

Column B         Column C
Supplier 1       1234, 4444
Supplier 2       2222, 3333

目前我正在使用 vba 中的用户定义函数来执行此操作:

Function SingleCellExtract(LookupValue As String, LookupRange As Range, ColumnNumber As Integer, Char As String)
'Updateby20150824
    Dim I As Long
    Dim xRet As String
    For I = 1 To LookupRange.Columns(1).Cells.Count
        If LookupRange.Cells(I, 1) = LookupValue Then
            If xRet = "" Then
                xRet = LookupRange.Cells(I, ColumnNumber) & Char
            Else
                xRet = xRet & "" & LookupRange.Cells(I, ColumnNumber) & Char
            End If
        End If
    Next
    SingleCellExtract = Left(xRet, Len(xRet) - 1)
End Function

然后使用下面的公式得到结果:

=SingleCellExtract(B14,Data!F:F,-1,",")

这行得通,但是,我有 500 多行数据,这种方法需要大约 10 分钟或更长时间来计算 - 有时会导致工作表崩溃。

请有人告诉我一个更好的方法吗?

【问题讨论】:

【参考方案1】:

一个直接的改进是将数据放入一个数组中,而不是为每次检查引用单元格:

Function SingleCellExtract(LookupValue As String, LookupRange As Range, LookupCol As Long, ReturnCol As Long, Char As String)
'Updateby20150824
    Dim varTMP As Variant, I As Long
    varTMP = LookupRange
    Dim xRet As String
    For I = 1 To UBound(varTMP, 1)
        If varTMP(I, LookupCol) = LookupValue Then
            If xRet = "" Then
                xRet = varTMP(I, ReturnCol)
            Else
                xRet = xRet & Char & varTMP(I, ReturnCol)
            End If
        End If
    Next
    SingleCellExtract = xRet
End Function

我还修改了您的返回线和 xRet 逻辑以避免需要 left/len。

【讨论】:

感谢您的建议,但这似乎仅适用于第一个单元格,然后导致该列下方的所有其他单元格显示#VALUE 错误 它在我的测试中运行良好,但是现有函数逻辑的一个缺陷是它期望查找列是源数据的第一列。我已经编辑了答案以拆分查找和返回列参数。这个修改后的函数在您给出的数据结构上完美运行。 (i.imgur.com/TmTea9d.png) 好吧,我不知道我在做什么不同,但它根本不适合我。它一直在说#Value。我重新启动了excel,我检查了单元格正在计算。如果它对你有用,我不确定为什么它对我不起作用。你在使用 excel 2013,如果这会有所不同,那我就在使用它。 数据表上的 D 列和 F 列之间的 E 列是否重要? 之间有 E 列就可以了。我可以假设您的公式看起来像这样吗? (当然是一个示例行范围)=SingleCellExtract(B2,Data!$D$1:$F$500,3,1,",")【参考方案2】:

我希望我的解决方案对您来说很有趣,这里是: 如果您按正在使用的两列对数据进行排序,它看起来像这样:

SupplierID  Text
1           Foo
1           Bar
1           FooBar
2           Foo
2           Bar
2           FooBar

现在只需将此公式添加到Result 列中:

=IF(A2<>A1,B2,CONCATENATE(C1,", ",B2))

这将创建像这样的输出:

SupplierID  Text    Result
1           Foo     Foo
1           Bar     Foo, Bar
1           FooBar  Foo, Bar, FooBar
2           Foo     Foo
2           Bar     Foo, Bar
2           FooBar  Foo, Bar, FooBar

最后,您可以在所有列中应用复制相同的文本。 我希望这会有所帮助!

【讨论】:

以上是关于Excel数据表如何查找多个值并填充数据对于的数值?的主要内容,如果未能解决你的问题,请参考以下文章

Excel查找指定列数据值并整行引用到其它表

excel如何查找重复的数据,并分别替换

Excel:跨多列查找值并返回标题列

如何查找excel一行中最小值

在列表中查找多个值并在新工作表中对它们进行排序

Excel 2016 - 如何使用多个复选框中的数据填充一个单元格?