【发布时间】:2016-06-09 00:10:10
【问题描述】:
我有一个 Excel 表,其中包含约 150 名员工的条目。每行包含姓名以及工作时间、工资、团队等。每行中的 B 列包含 Last,First 格式的员工姓名。表上大约一半的员工是兼职员工。我要做的是在VB中编写一个宏,如果B列中的名称与兼职员工的名称之一匹配,则复制整行,这样我的一位同事就可以简单地运行宏并粘贴所有每周将复制的用户行放入一个新工作表中。这是我目前拥有的。 (我在数组中有所有员工的姓名,但我已经将它们删掉了)我真的不太了解最后 50% 的代码。这些东西是我在网上找到的并且一直在搞乱的东西。
`Sub PartTime()
Dim strArray As Variant
Dim wsSource As Worksheet
Dim wsDest As Worksheet
Dim NoRows As Long
Dim DestNoRows As Long
Dim I As Long
Dim J As Integer
Dim rngCells As Range
Dim rngFind As Range
Dim Found As Boolean
nameArray = Array(NAMES CENSORED)
Set wsSource = ActiveSheet
NoRows = wsSource.Range("A65536").End(xlUp).Row
DestNoRows = 1
Set wsDest = ActiveWorkbook.Worksheets.Add
For I = 1 To NoRows
Set rngCells = wsSource.Range("C" & I & ":F" & I)
Found = False
For J = 0 To UBound(strArray)
Found = Found Or Not (rngCells.Find(strArray(J)) Is Nothing)
Next J
If Found Then
rngCells.EntireRow.Copy wsDest.Range("A" & DestNoRows)
DestNoRows = DestNoRows + 1
End If
Next I
End Sub`
【问题讨论】:
-
是否考虑过使用
nameArray作为Range.AutoFilter Method 中的条件? -
抱歉,这到底是什么?我根本不懂VB,所以你必须忍受我:\
-
使用“数据”、“排序和筛选”、“自动筛选”记录自己并从 B 列中选择几个名称。关闭记录,您将看到名称数组所属的位置。
-
我认为我的 nameArray 会很好。我看到有人以这种方式实现了我正在尝试做的事情,我只是不知道如何遍历我的文件并进行比较。