excel - 在以单元格值为条件的字符串之间复制内容
问题描述
我对 VBA 非常陌生,并且一直负责编写宏。
我最终应该得到三个看起来像这样的工作表
也就是说,我试图找到一种方法来复制“项目 1”和“项目 2”、“项目 2”和“项目 3”等之间的行,在所有情况下,列 D、E 或 F 中的单元格是不是空的。
通过浏览论坛,我可以找到一些让我开始的东西,但我不知道如何继续。任何帮助,将不胜感激。谢谢。
Sub CopyRows()
Dim r As Range, fr As String 'Item1
Dim c As Range, fc As String 'Item2
Dim StartR As Integer
Dim EndR As Integer
Dim NwRng As Range, Nwc As Range
Dim nwSh As Worksheet
fr = "Item 1"
fc = "Item 2"
Set r = Range("A:A").Find(what:=fr, lookat:=xlWhole)
Set c = Range("A:A").Find(what:=fc, lookat:=xlWhole)
If Not r Is Nothing Then
StartR = r.Row + 1
Else: MsgBox fr & " not found"
Exit Sub
End If
If Not c Is Nothing Then
EndR = c.Row - 1
Else: MsgBox fc & " not found"
Exit Sub
End If
Set NwRng = Range("D" & StartR & ":D" & EndR)
Set nwSh = Sheets.Add
For Each Nwc In NwRng.Cells
If Not IsEmpty(Nwc) Then Nwc.EntireRow.Copy nwSh.Cells(nwSh.Rows.Count, "A").End(xlUp).Offset(1)
Next Nwc
End Sub
解决方案
实际上,您可以在不循环的情况下仅使用自动过滤器来做到这一点。所有你需要的是:
使用自动过滤器
过滤
Description
非空白和Set1
非空白并复制它。过滤
Description
非空白和Set2
非空白并复制它。过滤
Description
非空白和Set3
非空白并复制它。完毕。
没有搜索,没有循环,没有混乱。最后你唯一需要做的就是清理你不喜欢的列。
推荐阅读
- python-3.x - 使用 python 列表生成输出
- javascript - ReactJS:(大)子组件上的 onClick 处理程序不起作用
- flutter - .forEach 在 Flutter 中接受多行
- javascript - 打开 d3 视觉到特定位置(冰柱)
- flutter - 如何避免动画时底部溢出 - Flutter
- laravel - 调用未定义的方法 Illuminate\Auth\GenericUser::save()
- javascript - Dragula:如何始终将项目移动到列表末尾
- javascript - 评论 useState 防止在 IE11 上崩溃
- android - Kotlin IOS/Android Mutliplatform 上手教程:未解决参考:平台
- go - go sdk 使用的 Gcloud 身份验证帐户