Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.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,我有一个正在工作的VBA宏,它可以从一个电子表格“AverageEarnings”复制到另一个“Sheet1”,条件是AO列中有“UNGRADED”一词。宏将所有这些条件行复制到Sheet1。我希望将B列和C列(“平均收入”)复制到A列和B列(“表1”)。我如何修正这一点 Sub UngradedToSHEET1() ' UngradedToSHEET1 Macro ' Dim wb1 As Workbook, wb2 As Workbook Dim ws1 As Works

我有一个正在工作的VBA宏,它可以从一个电子表格“AverageEarnings”复制到另一个“Sheet1”,条件是AO列中有“UNGRADED”一词。宏将所有这些条件行复制到Sheet1。我希望将B列和C列(“平均收入”)复制到A列和B列(“表1”)。我如何修正这一点

 Sub UngradedToSHEET1()

' UngradedToSHEET1 Macro
'
    Dim wb1 As Workbook, wb2 As Workbook
    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim copyFrom As Range
    Dim lRow As Long
    Dim stringToFind As String

    Set wb1 = ThisWorkbook
    Set ws1 = wb1.Worksheets("AverageEarnings")

    stringToFind = "UNGRADED"

    With ws1
        'Remove all filters from spreadsheet to prevent loss of information.
        .AutoFilterMode = False
        lRow = .Range("AO" & .Rows.Count).End(xlUp).Row 'Find a specific column.

        With .Range("AO1:AO" & lRow) ' This is the row where GRADED or UNGRADED is specified.
            .AutoFilter Field:=1, Criteria1:="=*" & stringToFind & "*" 'Filter specific information.
            Set copyFrom = .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow
        End With

        'Remove spreadsheet filters again.
        .AutoFilterMode = False
    End With

    Set ws2 = wb1.Worksheets("Sheet1")

    With ws2
        If Application.WorksheetFunction.CountA(.Cells) <> 0 Then    ' Find a blank row after A1.
            lRow = .Cells.Find(What:="*", _
                          After:=.Range("A1"), _
                          Lookat:=xlPart, _
                          LookIn:=xlFormulas, _
                          SearchOrder:=xlByRows, _
                          SearchDirection:=xlPrevious, _
                          MatchCase:=False).Row
        Else
            lRow = 1
        End If
        copyFrom.Copy .Rows(lRow)
    End With
End Sub
Sub UngradedToSHEET1()
'UngradedToSHEET1宏
'
将wb1设置为工作簿,将wb2设置为工作簿
将ws1标注为工作表,将ws2标注为工作表
从As范围变暗复制
暗淡的光线和长的一样
将字符串变暗为字符串
设置wb1=ThisWorkbook
设置ws1=wb1.工作表(“平均收入”)
stringToFind=“未分级”
使用ws1
'从电子表格中删除所有筛选器以防止信息丢失。
.AutoFilterMode=False
lRow=.Range(“AO”&.Rows.Count).End(xlUp).Row'查找特定列。
With.Range(“AO1:AO”&lRow)”这是指定分级或未分级的行。
.AutoFilter字段:=1,准则1:=“=*”&stringToFind&“*”'筛选器特定信息。
设置copyFrom=.Offset(1,0).SpecialCells(xlCellTypeVisible).EntireRow
以
'再次删除电子表格过滤器。
.AutoFilterMode=False
以
设置ws2=wb1。工作表(“表1”)
与ws2
如果Application.WorksheetFunction.CountA(.Cells)为0,则“在A1后找到一个空行”。
lRow=.Cells.Find(内容:=“*”_
之后:=.范围(“A1”)_
看:=xlPart_
LookIn:=xl公式_
搜索顺序:=xlByRows_
搜索方向:=xlPrevious_
MatchCase:=False)。行
其他的
lRow=1
如果结束
copyFrom.Copy.Rows(lRow)
以
端接头

此行复制整行:

Set copyFrom=
.Offset(1,0)。特殊单元格(xlCellTypeVisible)。EntireRow

您需要更改
EntireRow
以仅复制所需的列,可能类似于:

Set copyFrom=
.Offset(1,0).特殊单元格(xlCellTypeVisible).范围(.Cells(1,2),.Cells(1,3))


希望这有帮助,我现在无法检查此项。

如何修改此项。
?请解释您面临的问题以及您试图解决的问题。我的问题是找到我需要修改的内容,以便复制特定列。我假设它在这一行内-Set copyFrom=.Offset(1,0).SpecialCells(xlCellTypeVisible).EntireRow整个行函数可能需要修改为特定的单元格函数。Great没有看到这一点。谢谢你给我指明了正确的方向。