excel - 具体标准“大于 50000”或“小于 -50000”
问题描述
这就是我到目前为止所拥有的。我想进行一些修改,但我不完全了解如何去做;
在第 3 行,我希望我的“复制标准”为“大于 50000”或“小于 50000”。
如何指定 Sheet2 上第一项复制到的单元格?例如,Sheet2!B10?
然后,如何将符合我的条件的工作表 1 上的行复制的列限制为(例如)来自工作表 1 的 A、B、E、F、H、I、O 和 AG 列?
a = Worksheets("Sheet1").Cells(Rows.Count, 1).End(x1Up).Row
For i = 2 To a
If Worksheets("Sheet1").Cells(i, 3).Value = **>50000 OR <50000** Then
Worksheets("Sheet1").Rows(i).Copy
Worksheets("Sheet2").Activate
b = Worksheets("Sheet2").Cells(Rows.Count, 1).End(x1Up).Row
Worksheets("Sheet2").Cells(b + 1, 1).Select
ActivateSheet.Paste
Worksheets("Sheet1").Activate
End if
Next
Application.CutCopyMode = False
ThisWorkbook.Worksheets("Sheet1").Cells(1, 1).Select
End Sub
解决方案
您可以使用Abs()
功能并仅进行一次检查:
并使用对象的Range
属性通过方法选择给定行中的所需列:Worksheet
Intersect()
Option Explicit
Sub main()
Dim a As Long, i As Long
Dim sht2 As Worksheet
Set sht2 = Worksheets("Sheet2") ' set a worksheet object for destination sheet
With Worksheets("Sheet1") ' reference Sheet1
a = .Cells(.Rows.Count, 1).End(xlUp).Row ' get referenced sheet column A row index of last not empty cell
For i = 2 To a
If Abs(.Cells(i, 3).Value) > 50000 Then ' if cell value in current row index and column 3 is greater than 50000 or less then -500000
Intersect(.Rows(i), .Range("A:B , E:F, H:I, O:O, AG:AG")).Copy
sht2.Cells(sht2.Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial
Application.CutCopyMode = False
End If
Next
End With
End Sub
推荐阅读
- flutter - 悬停/按下时为图像着色
- jenkins - Jenkins 无法在 kubernetes 设置上构建
- javascript - Cookie 到期日始终设置为 7 天
- flutter - 底部导航栏不会在颤动中切换标签
- c# - 从存储过程填充下拉列表
- elasticsearch - 使用相同脚本对多个文档进行 Elasticsearch 批量更新
- continuous-integration - 当 composer.lock 使用 SamKirkland/FTP-Deploy-Action@3.1.1 通过 github 操作更改时,如何上传供应商/文件夹
- android - 如何在 Android 上发出 GET 请求?
- mysql - 如何获取mysql中每个用户的最新消息?
- javascript - 在 laravel7 中使用 ajax 和 jquery 导致下拉格式不显示在 html 中