excel - VBA将满足条件的多个行复制到另一个工作表
问题描述
我真的不太懂VBA,所以请耐心等待。
我有一个分配给特定航班 (LEGID) 的人员列表,我想将这些人员 (工作表 pax) 复制到另一个工作表中的特定单元格 (temp - 单元格 b15),但它不起作用。
此数据表是来自 salesforce 的查询报告。
Sub pax()
Dim LastRow As Long
Dim i As Long, j As Long
Dim legid As String
Application.ScreenUpdating = False
legid = ThisWorkbook.Worksheets("setup").Range("SelReq").Value
Debug.Print legid
'Find the last used row in a Column: column A in this example
With Worksheets("pax")
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
' MsgBox (LastRow)
'first row number where you need to paste values in temp'
With Worksheets("temp")
j = .Cells(.Rows.Count, "a").End(xlUp).Row + 1
End With
For i = 1 To LastRow
With Worksheets("pax")
If .Cells(i, 1).Value = legid Then
.Rows(i).Copy Destination:=Worksheets("temp").Range("a" & j)
j = j + 1
End If
End With
Next i
Application.ScreenUpdating = True
End Sub
解决方案
如果您只想复制名称。你可以用这个;但是,如果它们是命名范围,您将需要更新工作表名称和范围。此代码在 Sheet3 上查看特定单元格的值,然后如果该值与 Sheet1 上某个范围内的值匹配,它将把 Sheet1 上 B 列中的值放入 Sheet2
Sub Test()
Dim cell As Range
Dim LastRow As Long, i As Long, j As Long
Dim legid As String
With Sheet1
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
With Sheet2
j = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
End With
legid = Sheet3.Range("A1")
For i = 2 To LastRow
For Each cell In Sheet1.Range("A" & i)
If cell.Value = legid Then
Sheet2.Range("A" & j) = cell.Offset(0, 1).Value
j = j + 1
End If
Next cell
Next i
End Sub
推荐阅读
- amazon-web-services - Amazon Web Services (AWS) 的 AWS CloudFormation 模板文件无法创建 EC2 实例
- flutter - Flutter pub get failed with (1; The system cannot find path specified)
- python - Python中从R3到R15的地图图像
- react-native - 无法在原生反应中使用 TabIcon 更改屏幕?
- typescript - 无法在 TS 中使用模块,新手在这里
- c# - 使用 C# 在 Xamarin.android 中获取错误的 UTC 日期时间 (1970-01-01)
- python - 属性错误:模块“无 tf2 属性”(使用 TF2 运行 TF1 代码并具有所有兼容性)
- python - Pandas pivot:如何在不引入额外行的情况下保留所有 NaN 行
- r - 将 url 中的 excel 文件加载到 Rstudio
- flutter - Android Studio 不显示项目文件