将数据复制并粘贴到特定的行和列中

时间:2016-07-18 18:34:02

标签: vba

我有一个电子表格,可以计算某个月的个人得分。我目前有一个宏,可以根据个人姓名将当前分数复制到表格中。我希望能够在一个表格中跟踪多个月的分数。例如,想象一下,我的记分卡在5月给约翰85分。我希望宏将Johns得分放在表中,如下所示。

Name   Jan  Feb  Mar  April  May  June
Jim
James
John                         85
Jack

我尝试使用我所拥有的宏进行一维操作(即将当前分数放在名称旁边),但没有任何运气。无效的代码如下:

Private Sub MonthScore()

Dim row As Integer
Dim column As Integer

row = 2

column = 2

Do While (Sheets("Sheet2").Cells(row, column).Value <> "")
    If Sheets("Sheet2").Range("A" & row).Value = Sheets("Scorecard").Range("B2").Value _
     And Sheets("Sheet2").Cells(1, column).Value = Sheets("Scorecard").Range("J2") Then
    Sheets("Sheet2").Cells(row, column).Value = Sheets("Scorecard").Range("H15").Value
    End If
row = row + 1
column = column + 1

Loop
End Sub

任何有关使此代码生效的帮助(或任何可以使这项工作的代码集)都将非常感激。

1 个答案:

答案 0 :(得分:0)

您可以使用Application.Match()在名称和月份范围中找到值:

Sub MonthScore()

    Dim mR, mC
    Dim shtSC, sht2

    Set shtSC = Sheets("Scorecard")
    Set sht2 = Sheets("Sheet2")

    mR = Application.Match(shtSC.Range("B2").Value, sht2.Columns(1), 0)
    If Not IsError(mR) Then

        mC = Application.Match(shtSC.Range("J2").Value, sht2.Rows(1), 0)

        If Not IsError(mC) Then
            sht2.Cells(mR, mC).Value = shtSC.Range("H15").Value
        End If
    End If
End Sub