在excel-vba中有一串string匹配难题
我正在编写一个程序在工作分类问题。 我以CODE,DESCRIPTION,SUB-TOTAL的forms获取数据,例如:
LIQ013 COGNAC 25 LIQ023伏特加21 FD0001 PRETZELS 10 PP0502 NAPKINS 5
现在一切都是这样的…问题是我的公司提供了许多不同的酒吧。 所以像这样的数据每个月有800个logging。 我的老板想分解数据,所以她知道我们每个月在某个类别上花了多less钱。 例如:
酒精46 食物10 纸5
我想到的是我设置了一个“数据库”,这是一个真正的csv文本文件,其中包含这样的条目:
LIQ,白兰地,酒精 LIQ,伏特加酒,酒精 FD,cookies,食品 FD,爆米花,食品
我已经编写了将数据库作为工作表导入的代码,并将每个字段分隔到自己的列中。 我希望excel能够查看文件,以及何时看到LIQ和COGNAC为其分配ALCOHOL标识符。 这样我可以使用数据透视表来获得类别总和。 例如,我想要最终的产品看起来像这样:
LIQ013 COGNAC 25酒精 LIQ023伏特加酒21 FD0001 PRETZELS 10食物 PP0502 NAPKINS 5纸
有没有人有什么build议? 我担心的是,单点expression式匹配只是代码,即只是LIQ没有匹配COGNAC也可能会导致后来出现矛盾的描述时出现问题? 我还希望用户能够添加分类帐条目,以便识别的术语的数据库增长,变得更加广泛,希望更准确。
编辑
根据@Marc的请求,我包括我的解决scheme:
码
文件
请注意,这是一个非常愚蠢的解决scheme。 我删除了一些失败保险箱和其他一些代码相关的一个健壮的代码,但不是我们特定的解决scheme。
为了得到这个工作,有两个部分:
第一个是macros源代码,第二个是实际的文件
因为所有的故障保险箱都被删除了,所以需要将文件导入到出现的方式。 即googleDoc上的Sheet1应该是Excel中的Sheet1,在单元格“A1”处开始粘贴数据。 在macros运行之前,一定要在Sheet1中select单元格“A1”。 正如我所说,在成品中有实现,使其更加用户友好! 请享用!
EDIT2
这些链接吸。 他们不能很好地粘贴到excel中。 如果您对此感到满意,我可以通过电子邮件发送实际的工作簿。 这将有助于保存格式化等
在单独的工作表中使用查找表。 查找表的A列包含查找值(例如PRETZELS),列B包含类别(FOOD,ALCOHOL等)。 在希望类别显示在原始表单中的单元格中(让我们使用D3作为B3保存“PRETZELS”值的结果),请input以下公式:
=VLOOKUP(B3,OtherSheet!$A$1:$B$500,2,FALSE)
假定您的查找表位于名为“OtherSheet”的工作表的范围A1:B500
中。
此公式告诉Excel在查找的列A中查找查找值(B3),并从查找表的列B返回相应的值。 绝对引用( $
)确保您的公式不会在其他单元格中复制/粘贴公式时增加单元格引用。
当您获得新的类别和/或库存时,只需向其中添加新行,就可以在此位置更新查找表。