VBA 一次性选中符合条件的单元格 整行删除

13 篇文章 1 订阅
8 篇文章 2 订阅

有同学问:能不能使用union函数将符合条件的单元格所在行全部选中,然后删除.

如下图:删除黄色底纹的标题行

为此,给出代码如下:

Sub test()
Dim arr, myrow As String
Dim cc As Variant, ran As Range
r = Sheet1.Range("b65536").End(xlUp).Row
arr = Sheet1.Range(B1:B" & r).Value

For i = 1 To UBound(arr, 1)
    If arr(i, 1) = "count" Then
        myrow = myrow & i & ","
        myrow = myrow & i + 1 & ","
    End If
Next i

cc = VBA.Split(myrow, ",")
'union中必须是对象.所以这种写法必须先让一个变量定义为具体的对象
Set ran = Rows(cc(0))
For i = 1 To UBound(cc) - 1 '因分割后有一个空字符产生,所以舍掉
    Set ran = Application.Union(ran, Rows(cc(i)))
Next i

ran.Delete
Set ran = Nothing
End Sub

 

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Sub SplitSelection() Dim cell As Range For Each cell In Selection cell.Value = Replace(cell.Value, "-", "") Next cell End Sub ### 回答2: 可以使用下面的VBA代码将选中单元格按照“-”进行拆分: ``` Sub SplitCellsByDash() Dim selectedRange As Range Dim cell As Range Dim splitValues As Variant '将选中单元格赋值给selectedRange变量 Set selectedRange = Selection '循环遍历每个选择的单元格 For Each cell In selectedRange '检查单元格是否包含“-” If InStr(cell.Value, "-") > 0 Then '使用“-”进行拆分 splitValues = Split(cell.Value, "-") '将拆分后的值分别填充到相应的单元格中 cell.Value = splitValues(0) '在当前单元格的下方插入拆分后的值 cell.Offset(1).EntireRow.Insert cell.Offset(1).Value = splitValues(1) End If Next cell End Sub ``` 将此代码复制并粘贴到Excel的Visual Basic for Applications (VBA)编辑器中(按下ALT + F11进入编辑器),然后保存并关闭编辑器。选中要拆分的单元格,然后按下ALT + F8来打开宏对话框,选择"SplitCellsByDash"宏并点击运行。选中单元格将按照“-”进行拆分并填充到相应的单元格中。 ### 回答3: 下面是一段使用 VBA 代码将选中单元格按 "-" 拆分的示例: ```vba Sub SplitCellsByHyphen() Dim selectedRange As Range Dim cell As Range ' 检查是否选择了单个单元格 If Selection.Cells.Count <> 1 Then MsgBox "请选中一个单元格来执行拆分操作。", vbExclamation Exit Sub End If ' 获取选择的单元格范围 Set selectedRange = Selection ' 检查单元格是否包含 "-" If InStr(1, selectedRange.Value, "-") = 0 Then MsgBox "所选单元格中不包含 - 符号。", vbExclamation Exit Sub End If ' 将单元格内容按 - 符号拆分 For Each cell In selectedRange Dim parts As Variant parts = Split(cell.Value, "-") ' 检查拆分后的部分数量 If UBound(parts) <> 1 Then MsgBox "单元格内容拆分后不是两个部分。", vbExclamation Exit Sub End If ' 将拆分后的部分分别填充到相邻的单元格 cell.Value = parts(0) cell.Offset(0, 1).Value = parts(1) Next cell MsgBox "拆分完成。", vbInformation End Sub ``` 运行上述 VBA 代码后,首先会检查是否选中了单个单元格,并且该单元格是否包含 "-" 符号。然后,代码将选中单元格按 "-" 符号拆分为两个部分,并将两个部分分别填充到相邻的单元格中。最后,会显示一个消息框提示拆分完成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值