我是VBA的新手,但我觉得它可以在Excel中提供一些很棒的功能,而不必使用大型复杂的公式。
我有一个表,在该表中我确定了列和标题的组合存在的位置。
我想要做的是将每个列和行标题连接成一个列。
示例(可以有任意数量的列/行标题):
10CAT 20CAT 30CAT
EAR x x
CAR x x
GBR x x x
我有一个' x'我想连接成单列,如下所示:
10CATEAR
20CATEAR
20CATCAR
30CATCAR
10CATGBR
20CATGBR
30CATGBR
答案 0 :(得分:0)
“我不知道从哪里开始”我知道你的感受。我去过那儿。以下是您正在寻找的代码:
Option Explicit
Sub myMacro()
' offsets used to find X
Dim rOffset As Integer, cOffset As Integer
rOffset = 0
cOffset = 0
' row numbers for the source and destination
Dim rowDest As Integer, rowSour As Integer
rowDest = 1
rowSour = 2
' loop through all entries in column A
Do While Range("A" & rowSour).Value <> ""
' concatenation proccess when X is found
If Range("B2").offset(rOffset, cOffset).Value = "X" Then
' concatenation proccess
Range("T" & rowDest).Value = Range("B1").offset(0, cOffset).Value + Range("A" & rowSour).Value
' next concatenation
rowDest = rowDest + 1
End If
' next column for X
cOffset = cOffset + 1
' when looped through all columns, prepare variables for the next run
If Range("B1").offset(0, cOffset).Value = "" Then
' next row in column A
rowSour = rowSour + 1
' next row offset for X
rOffset = rOffset + 1
' reset column offset for X
cOffset = 0
End If
Loop
End Sub
尝试逐步完成该程序并理解为什么事情按照它们的方式完成。随身携带一本笔记本,并为每一步确定变量的值。该程序以逻辑方式编写。没有使用花哨的功能或结构。它被写成“你认为程序应该如何”。
理解语法。那么,一旦你弄清楚了算法(解决方案是如何完成的),试着让程序更有效率。有10种方法来纠正一个程序。
祝你好运,