如何根据活动工作表中的特定行和列编号从活动工作表的列复制文本并将其过去到另一个工作表

时间:2015-03-17 21:52:47

标签: excel excel-vba excel-vba-mac vba

我是excel vba的新手。我想编写一个宏,它可以将活动工作表的A列的文本值从第一行复制到最后一行,然后将其传递到同一个wordbook的另一张工作表。但复杂的部分是我必须根据B和C列活动表中给出的特定行和列号粘贴这些文本。

这是我在活动表格中的数据示例:

    column A    column B     column C            
   text value      row       column
        aaaa        1         1  
        aaaa        1         2  
        bbbb        1         3  
        bbbb        1         4
        cccc        1         5
        cccc        1         6
        dddd        2         1
        dddd        2         2
        dddd        2         3
        eeee        2         4
        eeee        2         5
        ffff        2         6

等等。

结果表应为:

    column A   column B    column C   column D    column E   column F  ..... 
1   aaaa        aaaa        bbbb        bbbb       cccc        cccc
2   dddd        dddd        dddd        eeee       eeee        ffff
3
4

1 个答案:

答案 0 :(得分:0)

这应该适合你。

Option Explicit
Sub copy_rng()
    Dim wb As Workbook, ws1 As Worksheet, ws2 As Worksheet
    Dim i As Integer
    Dim lrow As Long
    Dim myArray() As Variant
    Set wb = ThisWorkbook
    Set ws1 = wb.Sheets("Sheet1")
    Set ws2 = wb.Sheets("Sheet2")

    lrow = Cells(Rows.Count, 1).End(xlUp).Row
    myArray() = ws1.Range(Cells(1, 1), Cells(lrow, 3)).Value
    ws2.Activate
    For i = 1 To UBound(myArray)
        Cells(myArray(i, 2), myArray(i, 3)).Value2 = myArray(i, 1)
        If myArray(i, 4) = 1 Then
            Cells(myArray(i, 2), myArray(i, 3)).Interior.ThemeColor = xlThemeColorAccent1 'blue
        ElseIf myArray(i, 4) = 2 Then
            Cells(myArray(i, 2), myArray(i, 3)).Interior.ThemeColor = xlThemeColorAccent2 'red
        ElseIf myArray(i, 4) = 3 Then
            Cells(myArray(i, 2), myArray(i, 3)).Interior.ThemeColor = xlThemeColorAccent3 'green
        ElseIf myArray(i, 4) = 4 Then
            Cells(myArray(i, 2), myArray(i, 3)).Interior.ThemeColor = xlThemeColorAccent6 'orange
        End If
    Next i
End Sub

您可以使用工作表1中的数据创建一个数组,然后使用数组中的行号和列号将数据从A列复制到正确的单元格中。