首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过VBA修复excel中滑过的行?

如何通过VBA修复excel中滑过的行?
EN

Stack Overflow用户
提问于 2016-12-12 11:16:50
回答 3查看 143关注 0票数 0

我有一个excel文件,其中包含了很多行。每隔一秒就会滑过一排。如何通过VBA修复这些滑行?

我附上了一个小模板:

如果空白细胞在右边,我能做什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-12-12 15:13:12

下面是我的评论的VBA版本,向左移动:

代码语言:javascript
复制
Range("A:A").SpecialCells(xlCellTypeBlanks).Delete xlShiftToLeft

没有移动到右删除,但有几种方式围绕它取决于布局。一种更普遍的方法可以是将空白单元格选择移到左边,并使用插入移位到右边,但是我不知道如何在没有VBA的情况下做到。例如,在F列中选择空白单元格,并在A列的同一行中插入相应的单元格:

代码语言:javascript
复制
Intersect(Range("A:A"), Range("F:F").SpecialCells(xlCellTypeBlanks).EntireRow).Insert xlShiftToRight

对于更多随机空白区域,一种更普遍的方法是将每一行分别移动:

代码语言:javascript
复制
With ActiveCell.Worksheet.UsedRange  ' or change to a different range
    .SpecialCells(xlCellTypeBlanks).Delete xlShiftToLeft ' to shift all non-blank cells to the left
    For Each area In .SpecialCells(xlCellTypeBlanks).Areas
        area.Offset(, .Column - area.Column).Insert Shift:=xlToRight
    Next
End With
票数 0
EN

Stack Overflow用户

发布于 2016-12-12 11:30:33

假设A至F列中的数据

代码语言:javascript
复制
Sub Main()
    Dim rng As Range, cl As Range

    Set rng = Range("B1:B" & Range("B1").End(xlDown).Row)

    For Each cl In rng
        If cl.Offset(0, -1) = vbNullString Then
            Range(Cells(cl.Row, cl.Column), Cells(cl.Row, 6)).Cut Destination:=cl.Offset(0, -1)
        End If
    Next cl
End Sub
票数 0
EN

Stack Overflow用户

发布于 2016-12-12 11:34:27

试试这个:

代码语言:javascript
复制
  Sub slipp_fix()

    Set ww = Application.Selection
    Set ww = Application.InputBox("Select first col of table", xTitleId, ww.Address, Type:=8)

    For Each C In ww
    If C.Value = "" Then
    C.Select
    Selection.Delete Shift:=xlToLeft
    End If

    Next
end sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41099643

复制
相关文章

相似问题

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