Excel VBA Findnext和Split方法

Excel VBA Findnext和Split方法,excel,vba,split,find,delimiter,Excel,Vba,Split,Find,Delimiter,我需要帮助了解如何使用VBA解决这个问题。我有一个凌乱的CSV文件,需要组织成一个表格。目前看起来是这样的: 编辑:看起来我只有10次才能发布图片。让我们说它是杂乱无章的 我创建了另一个工作表,其中包含标题“账号”、“账户名称”、“截止日期”、“CUSIP#”、“市场价值”、“到期日”、“说明”、“税务成本”和“单位”。我需要将这些值复制到相应的列中 查找函数可能是我能想到的查找值为“Account Number:”的单元格的最佳方法。但是,“账号:1234567890”是一个单元格。我需要将字

我需要帮助了解如何使用VBA解决这个问题。我有一个凌乱的CSV文件,需要组织成一个表格。目前看起来是这样的: 编辑:看起来我只有10次才能发布图片。让我们说它是杂乱无章的

我创建了另一个工作表,其中包含标题“账号”、“账户名称”、“截止日期”、“CUSIP#”、“市场价值”、“到期日”、“说明”、“税务成本”和“单位”。我需要将这些值复制到相应的列中


查找函数可能是我能想到的查找值为“Account Number:”的单元格的最佳方法。但是,“账号:1234567890”是一个单元格。我需要将字符串拆分并提取“1234567890”部分。然后将提取的零件粘贴到相应标题中的表格(即新工作表)中。当它“FindNext”时,它必须将新值粘贴到它下面的空单元格中(在新工作表中)。重复此过程直到结束。我不知道怎样才能最好地解决这个问题。其他标题也是如此。

[Range]。TextToColumns是一种方便的VBA方法,用于将逗号分隔的文本直接转换为表格。比如说,

 Range("A1:A30").CurrentRegion.TextToColumns Destination:=Range("C1"), _
    DataType:=xlDelimited,         TextQualifier:=xlDoubleQuote, _ 
    ConsecutiveDelimiter:=False,   Tab:=True, _
    Semicolon:=False,              Comma:=True, _
    Space:=False,                  other:=False
将解析单元格A1到A30中以逗号分隔的数据转储,并将其转换为从C1开始的表。该表将有30行和尽可能多的列,以表格式显示数据

例如,如果单元格A1:A5包含以下内容:

13.67,4182085,13.80,13.54,"4/8/2015",65.10,15.50,"Alcoa Inc. Common Stock"
78.69,6385991,79.36,78.30,"4/8/2015",14.15,86.31,"American Express Company Common"
153.36,2760993,153.50,152.19,"4/8/2015",20.78,135.98,"Boeing Company (The) Common Sto"
15.61,7138359,15.74,15.50,"4/8/2015",43.36,16.59,"Bank of America Corporation Com"
80.44,4191357,81.24,79.92,"4/8/2015",13.68,90.60,"Caterpillar, Inc. Common Stock"
然后,上面的语句将在单元格C1:J5中创建一个5x8表,如下所示:

13.67   4182085  13.80  13.54   42102   65.10    15.50  Alcoa Inc. Common Stock
78.69   6385991  79.36  78.30   42102   14.15    86.31  American Express Company Common
153.36  2760993 153.50  152.19  42102   20.78   135.98  Boeing Company (The) Common Sto
15.61   7138359  15.74  15.50   42102   43.36    16.59  Bank of America Corporation Com
80.44   4191357  81.24  79.92   42102   13.68    90.60  Caterpillar, Inc. Common Stock
完整的文档可在

备忘单是:

表达式
.TextToColumns(目标、数据类型、TextQualifier、连续delimiter、制表符、分号、逗号、空格、其他、其他字符、字段信息、小数分隔符、千位分隔符、尾随小写)

其中表达式是范围对象

所有参数都是可选的。参数包括:

目的地
。。。指定Microsoft Excel将结果放置在何处的范围对象。如果范围大于单个单元格,则使用左上角的单元格

数据类型
。。。xlDelimited或1(默认值)表示文件由分隔符字符分隔。xlFixedWidth或2表示文件中的数据按固定宽度的列排列

TextQualifier
。。。使用TextQualifier:=xlTextQualifierDoubleQuote或TextQualifier:=2指定文本由双引号包围,使用xlTextQualifierSingleQuote或1表示单引号,使用xlTextQualifierNone或-4142(huh??)表示无引号

连续delimiter
。。。如果有微软Excel,请考虑连续分隔符作为一个定界符。默认值为False

选项卡
。。。如果为True,则数据类型为xlDelimited,制表符为分隔符。默认值为False

分号
。。。如果为True,则数据类型将被分隔,分号将被分隔。默认值为False

逗号
。。。如果为True,则将数据类型设为xlDelimited,并将逗号设为分隔符。默认值为False

空格
。。。如果为True,则将数据类型设为xlDelimited,并将空格字符设为分隔符。默认值为False

其他
。。。如果为True,则将数据类型设为xlDelimited,并且将OtherChar参数指定的字符设为分隔符。默认值为False

OtherChar
。。。另一个为True时的分隔符字符

FieldInfo
。。。包含单个数据列的解析信息的数组。这是非常强大的表格,有时髦的格式。我认为您可以在您的案例中使用它来指定字段名。请参阅Microsoft文档

小数分隔符
千位分隔符
尾随小数
是不言自明的


玩得开心

或者,根据您的示例,您可以使用一个简单的电子表格功能。如果单元格A1看起来像

Account Number:X7D4332, Account Name:Fidelity, As of Date: 3/15/15, CUSIP #:3136AMKZ1
然后

将在单元格E1中显示“X7D4332”。如果你用“帐号:”代替“帐号:”那么你会得到“忠诚”等等

没有宏,没有复杂的VBA范围方法

B1 =FIND("Account Number:", A1)
C1 =LEN("Account Number:")
D1 =FIND(",",A1,C1)
E1 =MID(A1, B1+C1, D1 - C1 - B1)