Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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

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
Vba 根据两个范围内的单元格值复制粘贴_Vba_Excel - Fatal编程技术网

Vba 根据两个范围内的单元格值复制粘贴

Vba 根据两个范围内的单元格值复制粘贴,vba,excel,Vba,Excel,我想写一个过程,将数据从一个工作簿复制并粘贴到另一个工作簿,这取决于两个范围内的“标签” 基本上,我想循环一个区域,将数据复制到每个单元格旁边,然后根据第二个区域中相应的单元格值将其粘贴到其他位置。我可以用一堆IF语句来实现这一点,但如果有人能建议使用变量或数组的更有效的选项,那将非常感谢,因为使用大型数据集显然会变得很乏味 多谢各位 For Each ColourCell In CopyRange If ColourCell.Value = "Blue" Then Colou

我想写一个过程,将数据从一个工作簿复制并粘贴到另一个工作簿,这取决于两个范围内的“标签”

基本上,我想循环一个区域,将数据复制到每个单元格旁边,然后根据第二个区域中相应的单元格值将其粘贴到其他位置。我可以用一堆IF语句来实现这一点,但如果有人能建议使用变量或数组的更有效的选项,那将非常感谢,因为使用大型数据集显然会变得很乏味

多谢各位

For Each ColourCell In CopyRange

    If ColourCell.Value = "Blue" Then
    ColourCell.Offset(, 1).Copy
    PasteRange.Find("Aqua").Offset(, 1).PasteSpecial xlPasteValues
    Else
    End If

    If ColourCell.Value = "Red" Then
    ColourCell.Offset(, 1).Copy
    PasteRange.Find("Pink").Offset(, 1).PasteSpecial xlPasteValues
    Else
    End If

    If ColourCell.Value = "Yellow" Then
    ColourCell.Offset(, 1).Copy
    PasteRange.Find("Orange").Offset(, 1).PasteSpecial xlPasteValues
    Else
    End If

Next

也许是这样的?(未经测试)

无论何时使用
.Find
,请检查是否找到了该单元格,否则将出现错误。

我的建议如下:

Dim findWord As String
Dim aCell As Range

For Each ColourCell In CopyRange

    Select Case ColourCell.value

        Case "Blue"
            findWord = "Aqua"

        Case "Red"
            findWord = "Pink"

        Case "Yellow"
            findWord = "Orange"

        Case Else
            findWord = ""

    End Select

    If findWord <> "" Then

        Set aCell = PasteRange.Find(What:=findWord, LookIn:=xlValues, _
                    LookAt:=xlWhole, SearchOrder:=xlByRows,SearchDirection:=xlNext, _
                    MatchCase:=False, SearchFormat:=False)

        If Not aCell Is Nothing Then 
            ColourCell.Offset(, 1).Copy      
            aCell.Offset(, 1).PasteSpecial xlPasteValues
        End If

    End If

Next ColourCell
Dim findWord作为字符串
Dim aCell As系列
对于CopyRange中的每个颜色单元
选择Case colorcell.value
案例“蓝色”
findWord=“Aqua”
案例“红色”
findWord=“粉红色”
案例“黄色”
findWord=“橙色”
其他情况
findWord=“”
结束选择
如果findWord“”那么
设置aCell=PasteRange.Find(What:=findWord,LookIn:=xlValues_
查看:=xlother,搜索顺序:=xlByRows,搜索方向:=xlNext_
MatchCase:=False,SearchFormat:=False)
如果不是的话,亚塞尔什么都不是
colorcell.Offset(,1).复制
aCell.Offset(,1).paste特殊XLPaste值
如果结束
如果结束
下一个染色池

不要使用
。像这样查找:)好的..我会修改。这只是建议。“+1太好了:)现在有一件事,如果
colorcell.value
与Aqua、粉色或橙色不匹配,
.Find
仍将运行;)因此,一个单独的子单元应该是niceCheers,唯一的问题是在我实际应用这个过程时,我使用的源区域包含的单元格比我需要复制的单元格多得多;我只想复制相关的代码。不,这不是“主要”区别:)主要区别是我只在需要时复制和粘贴:)为了改进按预期工作的代码,我建议您在进行5分钟的参观。
Dim findWord As String
Dim aCell As Range

For Each ColourCell In CopyRange

    Select Case ColourCell.value

        Case "Blue"
            findWord = "Aqua"

        Case "Red"
            findWord = "Pink"

        Case "Yellow"
            findWord = "Orange"

        Case Else
            findWord = ""

    End Select

    If findWord <> "" Then

        Set aCell = PasteRange.Find(What:=findWord, LookIn:=xlValues, _
                    LookAt:=xlWhole, SearchOrder:=xlByRows,SearchDirection:=xlNext, _
                    MatchCase:=False, SearchFormat:=False)

        If Not aCell Is Nothing Then 
            ColourCell.Offset(, 1).Copy      
            aCell.Offset(, 1).PasteSpecial xlPasteValues
        End If

    End If

Next ColourCell