Напечатайте символ против каждой скопированной ячейки с другого листа - PullRequest
0 голосов
/ 29 апреля 2019

Лист 1:

Jan 1
Jan 2
Jan 3
Feb 4
Feb 5
Mar 6
Mar 7
Apr 8
May 9
May 10
May 11

Лист 2:

    Jan Feb     Mar Apr May
1   X               
2   X               
3   X               
4       X           
5       X           
6           X       
7           X       
8               X   
9                   X
10                  X
11                  X

Я написал код VBA для копирования соответствующих значений каждого месяца на другой лист, но когда копируется «1»мне нужно напечатать «х» против него в B2, «2» копируется затем «X» в «B3» соответственно.Кто-нибудь может мне помочь?

Ответы [ 2 ]

1 голос
/ 29 апреля 2019

Кроме того, вы можете попробовать использовать этот код:

Sub CopyMonths()
    Dim lngLastRow          As Long
    Dim lngCount            As Long
    Dim lngColumn           As Long
    Dim lngRow              As Long
    Dim arrMonths           As Variant

    'two approaches: 1) either a static list of months:
    'arrMonths = Array("Jan", "Feb", "Mar", "Apr", "May")
    '2) or refer to Sheet2, range A1:E1
    arrMonths = Array(Sheet2.Range("A1:E1").Value)

    With Sheet1
        lngLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
        For lngCount = 1 To lngLastRow
            lngColumn = Application.WorksheetFunction.Match(.Range("A" & lngCount).Value, arrMonths, 0)
            lngRow = .Range("B" & lngCount).Value
            Sheet2.Cells(lngRow + 1, lngColumn).Value = "x"
        Next lngCount
    End With
End Sub
0 голосов
/ 29 апреля 2019

Это пример наполовину жестко закодированного кода, который выполняет то, что вы просите:

Sub months()

    Dim jan As Integer, feb As Integer, mar As Integer, apr As Integer, may As Integer
    Dim months As String, total As Integer

    months = "Jan,Feb,Mar,Apr,May"
    mon = Split(months, ",")
    total = 1
    While Sheets(1).Cells(total, 1) <> Empty
        Sheets(2).Cells(total + 1, 1) = total
        Select Case Sheets(1).Cells(total, 1)
            Case "Jan"
                jan = jan + 1
            Case "Feb"
                feb = feb + 1
            Case "Mar"
                mar = mar + 1
            Case "Apr"
                apr = apr + 1
            Case "May"
                may = may + 1
            'Add more months if needed
        End Select
        total = total + 1
    Wend

    For j = 1 To UBound(mon) + 1
        Sheets(2).Cells(1, j + 1) = mon(j - 1)
    Next

    For l = 1 To jan
        Sheets(2).Cells(l + 1, 2) = "X"
    Next

    feb = feb + jan

    For l = l To feb
        Sheets(2).Cells(l + 1, 3) = "X"
    Next

    mar = mar + feb

    For l = l To mar
        Sheets(2).Cells(l + 1, 4) = "X"
    Next

    apr = apr + mar

    For l = l To apr
        Sheets(2).Cells(l + 1, 5) = "X"
    Next

    may = may + apr

    For l = l To may
        Sheets(2).Cells(l + 1, 6) = "X"
    Next
End Sub

Как уже было сказано, дайте нам свой код, чтобы мы могли помочь вам лучше!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...