首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VBA -根据包含特定单词的单元格删除行+根据单元格值添加行

VBA -根据包含特定单词的单元格删除行+根据单元格值添加行
EN

Stack Overflow用户
提问于 2016-06-09 03:32:55
回答 2查看 150关注 0票数 1

我想要做的是:

从Salesforce导出excel文档。我正在尝试根据一个条件删除一些行,然后根据一组不同的条件添加行。作为VBA的新手,我浏览了论坛并搜索了一些示例代码,但无法让它们完全工作。

添加行:

C列=数量。需要根据C列中的值在下面添加行。如果数量=3-我想在下面添加2个空行。如果数量=下面的4-3个空白行...

已尝试:

代码语言:javascript
运行
复制
Sub BlankLine()

Dim Col As Variant
Dim BlankRows As Long
Dim LastRow As Long
Dim R As Long
Dim StartRow As Long

    Col = "C"
    StartRow = 15
    BlankRows = 1

        LastRow = Cells(Rows.Count, Col).End(xlUp).Row

        Application.ScreenUpdating = False

        With ActiveSheet
For R = LastRow To StartRow + 1 Step -1
If .Cells(R, Col) > 1 Then
.Cells(R + 1, Col).EntireRow.Insert Shift:=xlDown
End If
Next R
End With
Application.ScreenUpdating = True

End Sub

这行得通,但只在下面添加了一行--我需要它来根据列C= 'quantity‘的值添加行。

删除行:

列A=产品名称。如果任何产品名称包含MAINT或APP,我需要删除该行。已尝试:

代码语言:javascript
运行
复制
Sub test()

With ActiveSheet
.AutoFilterMode = False
With Range("A1", Range("A" & Rows.Count).End(xlUp))
    .AutoFilter 1, "*Maint*"
    On Error Resume Next
    .Offset(1).SpecialCells(12).EntireRow.Delete
End With
.AutoFilterMode = False
End With
End Sub

这也行得通,但是一旦完成就会删除第一行,所以我会丢失一些信息。

任何关于如何实现这一点的建议都是非常感谢的!

EN

回答 2

Stack Overflow用户

发布于 2016-06-09 03:35:45

代码语言:javascript
运行
复制
If .Cells(R, Col) > 1 Then
   numRows = val(.Cells(R, Col)) - 1
   For i = 1 to numRows
       .Cells(R + 1, Col).EntireRow.Insert Shift:=xlDown
   Next i
End If
票数 0
EN

Stack Overflow用户

发布于 2016-06-09 06:02:50

至于插入行

代码语言:javascript
运行
复制
For R = LastRow To StartRow + 1 Step -1
   With .Cells(R, Col)
      If .Value > 1 Then .Offset(1).Resize(.Value).EntireRow.Insert
   End With
Next R

用于过滤和删除

代码语言:javascript
运行
复制
Sub test()
With ActiveSheet
   .AutoFilterMode = False
   With .Range("A1", .Range("A" & .Rows.Count).End(xlUp))
      .AutoFilter Field:=1, Criteria1:=Array("*Maint*", "*APP*"), Operator:=xlFilterValues
      If Application.WorksheetFunction.Subtotal(103, .Cells) > 1 Then .Offset(1).Resize(.Rows.Count -1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
   End With
   .AutoFilterMode = False
End With
End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37711363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档