【问题标题】:VBA Logic Row Titles to Columns ExcelVBA逻辑行标题到列Excel
【发布时间】:2014-06-17 02:43:11
【问题描述】:

我在某些 VBA 代码的逻辑上遇到了问题,因此我无法提供任何代码,因为它缺少太多部分。基本上我需要做的是改变以下内容:

A
x1
x2
x3
B
y1
y2
y3

Into this:
A
x1 A
x2 A
x3 A
B
y1 B
y2 B
y3 B

这是一个大型 Excel 文档,因此需要循环!当然感谢任何指导:) 提前致谢!

【问题讨论】:

  • 还可以假设每个组的子集仅重复 3 次

标签: vba excel for-loop logic


【解决方案1】:

怎么样:

Sub cutaneous()
    Dim N As Long
    N = Cells(Rows.Count, "A").End(xlUp).Row
    For i = 1 To N - 3 Step 4
        v = Cells(i, 1).Value
        Cells(i + 1, 1).Value = Cells(i + 1, 1).Value & " " & v
        Cells(i + 2, 1).Value = Cells(i + 2, 1).Value & " " & v
        Cells(i + 3, 1).Value = Cells(i + 3, 1).Value & " " & v
    Next i
End Sub

【讨论】:

  • 我希望我有 15 名声望,这样我就可以投票了,因为这正是我想要的!非常感谢!
【解决方案2】:

这只有在您的标题下总是有 3 个子项时才有效。如果你有两个或四个;这是行不通的。我个人会实施一些不同的解决方案,可能是这样的:

Sub DistinguishItems()
    Dim iLastRow, iCounter As Long
        iLastRow = Cells(Rows.Count, "A").End(xlUp).Row
    Dim sDistinguisher As String


    For iCounter = 1 To iLastRow
        If Len(Range("A" & iCounter)) = 1 Or IsNumeric(Right(Range("A" & iCounter).Value, 1)) = False Then
            sDistinguisher = Range("A" & iCounter).Value
        Else
            Range("B" & iCounter).Value = sDistinguisher
        End If
    Next iCounter
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多