检查单元格范围以进行数据输入 - 连接到新列

时间:2014-09-16 15:01:26

标签: excel excel-vba vba

我是VBA的新手,但我觉得它可以在Excel中提供一些很棒的功能,而不必使用大型复杂的公式。

我有一个表,在该表中我确定了列和标题的组合存在的位置。

我想要做的是将每个列和行标题连接成一个列。

示例(可以有任意数量的列/行标题):

      10CAT  20CAT  30CAT
EAR      x      x
CAR             x      x
GBR      x      x      x

我有一个' x'我想连接成单列,如下所示:

10CATEAR
20CATEAR
20CATCAR
30CATCAR
10CATGBR
20CATGBR
30CATGBR

1 个答案:

答案 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种方法来纠正一个程序。

祝你好运,