【发布时间】:2016-11-07 20:44:08
【问题描述】:
我目前是第一次深入研究代码/VBA 编码。我有一个文件,我将其转储到当前我正在手动组织和推出的工作表中。当放入工作表时,它会在单元格之间划定界限。前 2-4 个单元格始终是名称的一部分。每次我在给定的一天得到它并转储到工作表中时,这个转储文件都会有不同的行和列长度。例如,一天可能是二十行,一天可能是三十。
这是数据外观的粗略说明,但我的代码可能与下面的示例不匹配 - 我只是想提供一个视觉效果:
所以,我想编写从 A1 开始的代码,并将其后面的单元格连接起来,直到它遇到该行中的空白单元格。然后它将连接的数据放入单元格 A1 并删除它从中提取名称片段的值并将所有数据滑动到左侧。之后,它在下一行继续相同的操作,直到遇到最后一行。如图所示,我不希望空白单元格之后的任何数据受到影响。
这是我第一次编程,所以当您提供帮助时,请您解释一下您的代码以便我学习这些概念吗?这是我认为到目前为止可行的方法......我只是坚持如何进行连接。
我目前拥有的代码:
Sub DN_ERROR_ORGANIZER()
Dim row As Integer
NumRows = Range("A1", Range("A1").End(xldown)).Rows.Count
Range("A1").Select
For row = 1 To NumRows
Do Until IsEmpty(ActiveCell)
' Code to concatenate
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.Offset(1, 0).Select
Next
End sub
【问题讨论】:
-
根据您的数据,John Doe 的行似乎最终会成为“Doe,John Data”。
-
您可以找到公式中的最后一个单元格。您可以使用这个人所做的将其转换为连接公式。 excelcampus.com/keyboard-shortcuts/concatenate-range-of-cells
-
@Mat'sMug 我想做的编码类型将在第一次出现空白单元格时停止。对于第 2 行,代码将执行 A2 + "、" + B2 + " " + C2,在 C2 处停止,因为 D2 是一个空白单元格,将循环到目前为止的内容放入 A2,删除原本在 A2、B2 中的内容,和 C2 ,将单元格向左移动,并继续对下一行进行相同的操作。对于第 3 行,代码将改为执行 A3 + ", " + B3,在 B3 处停止,因为 C3 是空白单元格,将循环到目前为止的内容放入 A3,删除最初在 A3 和 B3 中的内容,将单元格移动到离开,然后进入下一行。
-
知道了。不过,您肯定要避免使用
.Select和.Activate。
标签: vba excel excel-formula