我怎样才能使用函数在Excel中写入数据库查询?
我有一些像这样在表格中构build的数据:
。
我的电子表格中有另一个选项卡,可以消除任何重复的类别条目,并希望连接数据如下所示:
我需要使用函数而不是macros或Visual Basic来创build它。 我已经写了函数来消除任何重复的类别条目,现在我需要弄清楚如何获取每个独特的类别并在其后面追加数据。 有任何想法吗?
假设第一张图片来自Sheet1
和第二张Sheet2
,这里有一个办法。 您需要将至less一个计算列添加到Sheet1
和可选的两个计算行到Sheet2
。
- 唯一标识
Sheet1
上的每一行。 在A3
添加公式=B3&COUNTIF($B$3:B3,B3)
的新列A
并填写。 您将在A3
获得first1
,在A4
获得first1
,等等。 - 识别
Sheet2
上的每一列。 在B6
添加公式=COUNTIF($B$2:B2,B2)
的新行6
并填充。 值将是1,1,1,2,2,2,3,3,3
。 如果你喜欢,你可以手动input,但不会轻易缩放。 - 计算
Sheet1
中每个数据项的列,并放入Sheet2
的列中。 使用公式=MATCH(B2,Sheet1!$A$2:$E$2,0)
添加一个新的第7
行到Sheet2
并填充。 值将是3,4,5,3,4,5,3,4,5
。 我们现在知道,对于Sheet2
每个单元格,我们有哪个类别的实例以及数据variables来自哪个列。 - 使用
VLOOKUP
查找数据表中的first1
并返回数据列3
。 在Sheet2
,将单元格B3
设置为=VLOOKUP($A3&B$6,Sheet1!$A$2:$E$8,B$7,FALSE)
然后填充。 - 你会有一些
#N/A
错误(例如单元格E4
)。 如果你有一个更新版本的Excel,你可以使用IFERROR()
来逃避这个; 否则,使用=IF(ISNULL(<formula>), "", <formula>)
其中<formula>
是步骤4中的公式。
总结:
- 为源中的每一行创build一个唯一的,顺序的,可计算的行ID。
- 确定目标中每个列使用该序列的哪个实例。 这附加到类别的末尾以确定上一步中形成的行ID。
- 确定哪个列包含目标中每列的数据。
- 使用计算的行ID查找行,并find该数据项的相关列。
- 格式化结果适当。