首页 > 解决方案 > 我如何组合/透明的分离数据

问题描述

我有 2019 年至 2021 年和 2016 年至 2018 年的数据。我想将数据和 KeyNumbers 结合起来,我认为最好通过 VBA。但是我不知道该怎么做,到目前为止,我将数据从一张纸移到了这张纸上,在这里我收集了数据。但岁月是分开的。我需要它从 R 行到 T 行显示。这对我有很大帮助,因为我有 65 张这样的表格。所以一个简单的 VBA 会有很大帮助!

提前致谢

我试着写VBA。它正在到达那里,但结果混合起来

    Sub x()

Dim lngDataColumns As Long
Dim lngDataRows As Long

lngDataColumns = 2
lngDataRows = 20


For t = 1 To lngDataRows

Range("n2").Offset(((t - 1) * lngDataColumns) - 1, 0).Resize(lngDataColumns, 1).Value = _
        Application.Transpose(Range("g24:h24").Offset(t).Value)

Range("o2").Offset(((t - 1) * lngDataColumns) - 1, 0).Resize(lngDataColumns, 1).Value = _
        Application.Transpose(Range("i24:j24").Offset(t).Value)
Next t

End Sub
    Sub y()



Dim lngDataColumns As Long
Dim lngDataRows As Long

lngDataColumns = 3
lngDataRows = 20



Range("p2").Offset(((t - 1) * lngDataColumns) - 1, 0).Resize(lngDataColumns, 1).Value = _
        Application.Transpose(Range("h5").Offset(t).Value)

    End Sub

在此处输入图像描述

在此处输入图像描述

标签: excelvba

解决方案


你可以试试:

Option Explicit

Sub test()

    Dim LastrowH As Long, Year As Long, i As Long, LastrowR As Long
    Dim Amount As Double
    Dim Key As String

    With ThisWorkbook.Worksheets("Sheet1")

         LastrowH = .Cells(.Rows.Count, "H").End(xlUp).Row

         For i = 2 To LastrowH
            'Check if Key start from DR (we assume that anything start with DR is key we need)
            If Left(.Range("H" & i).Value, 2) = "DR" Then 'Remove this line

                Key = .Range("H" & i).Value
                Amount = .Range("L" & i).Value
                Year = .Range("M" & i).Value
                LastrowR = .Cells(.Rows.Count, "R").End(xlUp).Row
                    .Range("R" & LastrowR + 1).Value = Key
                    .Range("S" & LastrowR + 1).Value = Amount
                    .Range("T" & LastrowR + 1).Value = Year

                    If Year = 2018 Then

                        .Range("R" & LastrowR + 2 & ":R" & LastrowR + 4).Value = Key
                        .Range("S" & LastrowR + 2 & ":S" & LastrowR + 4).Value = Amount
                        .Range("T" & LastrowR + 2).Value = Year + 1
                        .Range("T" & LastrowR + 3).Value = Year + 2
                        .Range("T" & LastrowR + 4).Value = Year + 3

                    End If

            End If 'Remove this line

         Next i

    End With

End Sub

如果要删除 DR(if 语句),请删除末尾带有'Remove this line的行。


推荐阅读