You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

餐饮公司Excel配料数据汇总需求:快速统计指定区域物料与数量数组

解决餐饮企业Excel物料数量汇总问题

Hey there! As someone who's helped plenty of food service businesses streamline their inventory workflows, let's get your ingredient quantity aggregation sorted out—this will definitely save you time and reduce manual errors.

方法1:用Excel内置公式快速实现(无需编程)

这种方法适合日常快速统计,不需要写代码,直接用Excel的函数组合就能得到物料-数量的数组结果:

步骤1:提取唯一物料列表

假设你的物料名称在A2:A100区域,数量在B2:B100区域,用UNIQUE函数提取所有不重复的物料:

=UNIQUE(A2:A100)

这个公式会返回一个垂直数组,包含所有唯一的物料名称。

步骤2:汇总对应物料的总数量

在相邻列(比如D列是唯一物料,E列放数量),用SUMIF函数对应每个物料计算总数量:

=SUMIF(A2:A100, D2, B2:B100)

把这个公式下拉,就能得到所有物料的总数量。

步骤3:直接生成物料-数量的组合数组

如果想一步到位得到包含两列的数组结果,用HSTACK函数把上述两个结果合并:

=HSTACK(UNIQUE(A2:A100), SUMIF(A2:A100, UNIQUE(A2:A100), B2:B100))

这个公式会直接返回一个2列的数组,第一列是物料,第二列是对应总数量。

注意:如果你的Excel版本没有UNIQUE或HSTACK(比如Excel 2019及更早),可以用数组公式替代唯一值提取:

=INDEX(A$2:A$100, MATCH(0, COUNTIF(D$1:D1, A$2:A$100), 0))

输入后按Ctrl+Shift+Enter作为数组公式,然后下拉直到出现错误值,再删除错误行即可。

方法2:用VBA脚本实现自动化汇总(适合定期批量处理)

如果你们需要定期更新数据、批量处理多个工作表,VBA脚本会更灵活,能一键完成汇总:

完整VBA代码

打开Excel,按Alt+F11打开VBA编辑器,插入一个新模块,粘贴以下代码:

Sub AggregateRestaurantIngredients()
    Dim targetSheet As Worksheet
    Dim dataRange As Range
    Dim uniqueItems As Collection
    Dim currentCell As Range
    Dim item As Variant
    Dim resultArray() As Variant
    Dim rowIndex As Integer
    
    ' 配置你的工作表和数据区域(根据实际情况修改)
    Set targetSheet = ThisWorkbook.Worksheets("配料表") ' 替换成你的工作表名称
    Set dataRange = targetSheet.Range("A2:B100") ' A列=物料,B列=数量
    Set uniqueItems = New Collection
    
    ' 遍历数据,收集唯一物料(忽略空值)
    On Error Resume Next ' 跳过重复项的报错
    For Each currentCell In dataRange.Columns(1).Cells
        If Trim(currentCell.Value) <> "" Then
            uniqueItems.Add currentCell.Value, Key:=CStr(currentCell.Value)
        End If
    Next currentCell
    On Error GoTo 0
    
    ' 初始化结果数组
    ReDim resultArray(1 To uniqueItems.Count, 1 To 2)
    
    ' 填充数组:物料名称 + 总数量
    rowIndex = 1
    For Each item In uniqueItems
        resultArray(rowIndex, 1) = item
        resultArray(rowIndex, 2) = Application.SumIf(dataRange.Columns(1), item, dataRange.Columns(2))
        rowIndex = rowIndex + 1
    Next item
    
    ' 将结果输出到工作表(这里输出到D1开始的区域)
    targetSheet.Range("D1:E1").Value = Array("物料名称", "总数量")
    targetSheet.Range("D2").Resize(UBound(resultArray, 1), 2).Value = resultArray
    
    MsgBox "物料汇总完成!结果已输出到D-E列。"
End Sub

使用说明:

  1. 修改代码中的"配料表"为你的实际工作表名称
  2. 调整dataRange为你存放物料和数量的指定区域
  3. 回到Excel,按Alt+F8选择AggregateRestaurantIngredients宏运行即可

额外小贴士

  • 确保物料列没有拼写错误(比如"番茄"和"蕃茄"会被当成两个不同物料),可以用PROPER或LOWER函数统一格式
  • 如果需要实时更新,公式方法开启Excel的自动计算即可;VBA方法可以设置按钮,一键触发汇总

内容的提问来源于stack exchange,提问作者Marcin Frankowski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:43:54