Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何根据活动工作表中的特定行号和列号,将文本从活动工作表的列复制到另一个工作表_Excel_Vba_Macos - Fatal编程技术网

Excel 如何根据活动工作表中的特定行号和列号,将文本从活动工作表的列复制到另一个工作表

Excel 如何根据活动工作表中的特定行号和列号,将文本从活动工作表的列复制到另一个工作表,excel,vba,macos,Excel,Vba,Macos,我是excel vba新手。我想写一个宏,它可以将活动工作表a列的文本值从第一行复制到最后一行,再经过它复制到同一wordbook的另一个工作表。但复杂的部分是,我必须根据B列和C列活动表中给出的特定行和列编号粘贴这些文本 这是我在活动工作表中的数据示例: column A column B column C text value row column aaaa 1 1

我是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

这应该对你有用

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列中的数据复制到正确的单元格中。

这是有效的。非常感谢。我还有一个问题。如果工作表1中A列中文本的D列中有值。根据该值,我想将颜色从白色指定为红色(0到更高),然后将其作为单元格背景(sheet2),并根据行和列指定文本。你能帮我吗?很好用。非常感谢。我还有一个问题。如果在表格1的a栏中文本的D栏中有值。根据该值,我想将颜色从白色指定为红色(0到更高),然后将其作为单元格背景(sheet2),并根据行和列指定文本。你能帮帮我吗@vockzI已经修改了我原来的答案,加入了改变电池颜色的内容。除了像我一样使用If语句之外,我不知道你会怎么做,也许还有一种更有效的方法。您必须找出要使用“xlThemeColorAccent”编号的颜色。希望对你有用。