试图通过使用excel的相关性进行匹配

时间:2012-03-09 18:23:01

标签: vba sorting excel-vba sum excel

我有这个格式很差的数据,我必须每周工作。这是一个示例:

Code:     To:     Total:       Description:      
-------------------------------------------------------------
FD987     00001   5            Food/Snack/M&M
FD987 00001 5 Food/Snack/Pretzels
NA654 00001 5 Non-Alc/Soda/Sprite
NA654 00002 2 Non-Alc/Soda/Sprite
NA987 00002 2 Non-Alc/Soda/Lemonde

我希望数据最终按“To”代码排序,每个类别中的小计的各种数据总和以及整个“To”条目的小计。像这样:

To:     Total:       Description:     
---------------------------------------------------
00001   10           Food Subtotal
00001 5 Non-Alc Subtotal
00001 15 Grand total
00002 0 Food Subtotal
00002 4 Non-Alc Subtotal
00002 4 Grand total

我编写的代码为“00001”和“00002”。但我不知道该怎么做。我应该使用if和for的组合循环吗?

示例:

pseudo code:

for all i in UniqueToCodes
    if (cell.value = i) then
        Descriptions = {"Food", "Non-Alc"} 
        tempsum = 0
        for all j in Descriptions 
            q = total for item j belonging to Descriptions belonging to UniqueToCodes
            tempSum = tempSum + q
        next j
    end if
next i 

或者向后循环会更有效率?

例如:

pseudo-code:

for i = lastOccurenceOf(ToCode) to firstOccurenceOf(ToCode) -1
    Descriptions = {"Food", "Non-Alc"}
    for all j in Descriptions
        q = total for item j belonging to Descriptions belonging to UniqueToCodes
        tempSum = tempSum + q
    next j
next i

(我知道“To”代码总是以块的形式出现,而不会被其他代码插入,即 总是这样:

00001
00001
00002

永远不会这样:

00001
00001
00003
00001

我也如何存储所有这些临时总和?即“Food”的tempSum和“To-”的“非Alc”的临时代码为“00001”?我知道字典对象只将一个属性映射到一个键。但是我需要将描述和总计的小计与“To”代码相匹配。你会说什么是解决这个问题的最佳方法?任何帮助将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:2)

就像人们在评论中所说的那样,数据透视表可能是汇总数据的最简单方法。但是,为了按照您想要的方式进行小计,您需要拆分描述列。

在Excel 2007中,您可以使用Text to Columns,如下所示:

  1. 选择“说明”列。
  2. 点击Data - > Text to Columns
  3. Convert Text to Columns Wizard上确保原始数据类型设置为Delimited,然后点击Next
  4. 使用Delimiters选择Other/,然后点击Finish
  5. 根据需要重命名新列。
  6. Using Text to Columns Wizard Renamed Columns

    如果“文本到列”不可用,只需创建一个公式以从“描述”中提取第一种食物类型。例如,使用上面的第一张图片,将此公式放在单元格E2中。 =LEFT(D2,FIND("/",D2)-1)

    现在您可以创建一个数据透视表。

    1. 确保活动单元格位于数据表格内,然后点击Insert - > PivotTable。显示Create PivotTable对话框时,点击OK
    2. ToType拖至Row Lables区域,将Total拖至Values区域。
    3. 完成。有你的基本数据透视表。您可以通过数据透视表选项和字段设置更改基本格式。
    4. basic pivot table