2012-03-09 21 views
0

我有这种非常格式不正确的数据,我必须每周工作。这里有一个例子:试图通过使用excel的relavence做一场比赛

 
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:  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 

(我知道“到”代码始终显示为块,且从未被其他代码感叹词即 总是像这样的:

 
00001 
00001 
00002 

从未因为这个:

 
00001 
00001 
00003 
00001

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

+2

你有没有考虑过使用数据透视表? – assylias 2012-03-09 18:24:16

+0

同意,根据您的示例数据,关键点几乎肯定会更容易。 [良好的资源开始](http://www.ozgrid.com/Excel/excel-pivot-tables.htm) – Gaffi 2012-03-09 18:25:49

+0

我第三个数据透视表的建议。你的数据非常完美。 – 2012-03-09 18:39:17

回答

2

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

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

  1. 选择您的描述列。
  2. 点击Data - >Text to Columns
  3. Convert Text to Columns Wizard确保原始数据类型设置为Delimited并单击Next
  4. 选择DelimitersOther并输入/,然后点击Finish
  5. 无论你想要什么,重新命名新的列。

Using Text to Columns Wizard Renamed Columns

如果文本分列不可用,只是创建一个公式来拉第一食品类了说明。例如,使用上面的第一张图片,将此公式放在单元格E2中。 =LEFT(D2,FIND("/",D2)-1)

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

  1. 确保活动单元格数据表中,然后点击Insert - >PivotTable。当显示Create PivotTable对话框时,单击OK
  2. 拖动ToTypeRow Lables区域和TotalValues区域。
  3. 完成。有你的基本数据透视表。您可以通过数据透视表选项和字段设置更改基本格式。

basic pivot table