【发布时间】:2014-09-02 15:31:02
【问题描述】:
请注意,我正在使用一系列约 1000 行的医疗信息数据库。由于数据库的大小,手动操作数据过于耗时。因此,我尝试学习 VBA 并使用 VBA 编写 Excel 2010 宏来帮助我完成对某些数据的解析。所需的输出是从数据库每一行提供的字符串中拆分某些字符,如下所示:
99204 - 办公室/门诊,新
需要拆分成
Active Row Active Column = 99204 ActiveRow Active Column+3 = OFFICE/OUTPATIENT VISIT, NEW
我使用 Walkenbach 的“Excel 2013:Power Programming with VBA”和大量网络资源(包括这个很棒的网站)研究了这个主题,但无法在 Excel 中使用 VBA 开发一个完全可行的解决方案。我当前宏的代码是:
Sub EasySplit()
Dim text As String
Dim a As Integer
Dim name As Variant
text = ActiveCell.Value
name = Split(text, "-", 2)
For a = 0 To 1
Cells(1, a + 3).Value = Trim(name(a))
Next a
End Sub
代码使用“-”字符作为分隔符将输入字符串拆分为两个子字符串(我将输出字符串限制为 2,因为在某些输入字符串中存在多个“-”字符)。我已经修剪了第二个字符串输出以删除前导空格。
我遇到的问题是输出显示在活动表的顶部,而不是活动行。
提前感谢您的帮助。我已经为此工作了2天,虽然我取得了一些进展,但我觉得我陷入了僵局。我认为问题出在
Cells(1, a + 3).Value = Trim(name(a))
代码,特别是“Cells()”。
谢谢康拉德·弗里克斯!
是的.. 够有趣的。就在我发布之后,我有一个头脑风暴..并修改代码以阅读:
Sub EasySplit()
Dim text As String
Dim a As Integer
Dim name As Variant
text = ActiveCell.Value
name = Split(text, "-", 2)
For a = 0 To 1
ActiveCell.Offset(0, 3 + a).Value = Trim(name(a))
Next a
End Sub
不是我想要的 colkumn1,column4 输出(它输出到 column3,column4),但它可以满足我的目的。
现在我需要合并一个循环,以便代码在列中的每个连续单元格上运行(向下,步骤 1)跳过所有粗体单元格,直到它碰到一个空单元格。
【问题讨论】:
-
不确定...对不起。请扩大这个?我正在 A 列(活动表的第一列)中的单元格上运行代码
-
是的,但不是我要拆分的字符串数据。 A1 通常有一个带有描述性信息的标题(在本例中为报告标题)。
-
是的,它会被最初发布的代码覆盖。该问题已通过连续修改得到解决(如该线程中所述)。现在我关心在一系列行上执行宏(而不是为每一行独立执行它)。感谢您的意见:)