【问题标题】:Grouping rows by a certain condition from one column从一列中按特定条件对行进行分组
【发布时间】:2020-04-03 07:50:54
【问题描述】:

首先,这是我的第一篇文章,所以我会尽量简单地解释这个问题。我有一张表,其中存储了从供应商处购买的所有文章的数据。从 A 列到 G 列,数据为“参考文章”、“名称”、“供应商”、“描述”、“单位成本”、“数量”、“总成本(Qt*U.cost)。 我想将每个供应商的行分组在一个单独的工作表中(+50 个不同的补充)。

另外我需要,当供应商的一组文章中包含具有相同“参考文章”或相同“名称”的项目时,(有没有“参考文章”或“名称”的文章)宏总和数量和总计最终只为每种类型的文章显示一行,其中包含该文章的所有数量和总计。

我不是要求完成宏,但如果有人可以为我提供我可以尝试解决问题的功能。我不知道使用哪个函数来过滤组,我尝试创建循环来为每篇文章创建新工作表和计数器,但这是一场灾难。

【问题讨论】:

  • 您能否提供一些示例数据以及您创建的代码。从你正在做的事情中给你建议比从 0 开始更容易

标签: excel vba


【解决方案1】:

好吧,让我们做一些假设:

  • 您已经为供应商准备了所有工作表
  • 这些供应商表的名称与您在数据表中找到的名称相同

你可以做的是:

Dim sheetSupplier As Worksheet
Dim i As Integer, last_used_row_supplier As Integer

With Sheets("Data") 'the sheet where all your data is located

    For i = 2 To 100 'please change according to the correct start and end
    
        supplier_sheet = .Cells(i, 3) 'gives the supplier name for each row, hence sheet name
        Set sheetSupplier = Sheets(supplier_sheet)
        next_row_supplier = sheetSupplier.Range("A1").End(xlDown).Row + 1 'gives row to use next
        
        'Now you can copy your data by using cells = cells
        
        sheetSupplier.Cells(next_row_supplier , 1) = .Cells(i, 1) 'column 1 in supply sheet = column 1 in data sheet
        sheetSupplier.Cells(next_row_supplier , 2) = .Cells(i, 5) 'column 2 in supply sheet = column 5 in data sheet
        '... and so on ...
    
    Next

End With

关于每篇文章的总和,您可以简单地使用条件总和(如 SUMIF Excel 函数)。

【讨论】:

    猜你喜欢
    • 2018-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多