2012-04-05 71 views
1

我有一些数据是这样构成的表格:如何使用函数在Excel中编写类似查询的数据库?

existing table

我有我的电子表格的另一个标签,让我消除任何重复的类别条目,并要连接的数据看起来像这样:

new table

我需要使用功能和创建此不是宏或Visual Basic。我已经编写了这个函数来消除任何重复的类别条目,现在我需要弄清楚如何获取这些独特的类别并在其后面追加数据。有任何想法吗?

+0

编辑嵌入图像。这样,如果图像从Picasa中取出,问题不会过时。 – 2012-04-05 04:53:52

+0

我认为需要写*** *** MACRO *** – 2012-04-05 04:54:52

+0

[Excel函数可以在工作表数据上做类似SQL的查询?](http://stackoverflow.com/questions/8756802/excel-function -to-make-sql-like-queries-on-worksheet-data) – 2012-04-05 05:42:31

回答

1

假设第一张图片来自Sheet1,第二张图片来自Sheet2,这里有一个办法。您需要至少将一个计算列添加到Sheet1,并且可以将至少两个计算行添加到Sheet2

  1. 唯一标识Sheet1上的每一行。使用公式=B3&COUNTIF($B$3:B3,B3)A3中添加新列A并填写。您将在A3中有first1,first2,A4等等。
  2. 识别Sheet2上的每个列块。在B6中添加新行6并使用公式=COUNTIF($B$2:B2,B2)填充。值将是1,1,1,2,2,2,3,3,3。如果你喜欢,你可以手动输入它们,但它不会轻松扩展。
  3. 计算出Sheet1中每个数据项的列,并将其放入Sheet2的列中。使用公式=MATCH(B2,Sheet1!$A$2:$E$2,0)添加一个新行7Sheet2并填充。值将是3,4,5,3,4,5,3,4,5。我们现在知道,对于Sheet2中的每个单元格,我们有哪个类别的实例以及数据变量来自哪个列。
  4. 使用VLOOKUP找到first1并返回数据表中的数据列3。在Sheet2上,将单元格B3设置为=VLOOKUP($A3&B$6,Sheet1!$A$2:$E$8,B$7,FALSE)并填充并填充。
  5. 您将有多个#N/A错误(例如,单元格E4)。如果你有一个更新版本的Excel,你可以使用IFERROR()来逃避这个;否则,使用=IF(ISNULL(<formula>), "", <formula>)其中<formula>是在步骤式4

总结:

  • 在源中的每个行创建一个唯一的,连续的,可计算的行ID。
  • 确定目标中每列使用该序列的哪个实例。这附加到类别的末尾以确定上一步中形成的行ID。
  • 确定哪个列包含目标中每列的数据。
  • 使用计算的行ID查找该行并查找该数据项的相关列。
  • 适当地设置结果的格式。
相关问题