在VBA中复制某些列
我有一个正在工作的VBA宏,它可以从一个电子表格“AverageEarnings”复制到另一个“Sheet1”,条件是AO列中有“UNGRADED”一词。宏将所有这些条件行复制到Sheet1。我希望将B列和C列(“平均收入”)复制到A列和B列(“表1”)。我如何修正这一点在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
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没有看到这一点。谢谢你给我指明了正确的方向。