excel vba如何删除选定区域内不等于指定内容的单元格所在的列

zxcv780229 2015-07-15 04:46:59
在一个数据表,任意选定区域 ,判断单元格内的值,如果等于指定值,不做任何操作,如果不等于指定的值,则把单元格所在的列删除,请教VBA如何实现。
...全文
1528 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
X-i-n 2015-07-17
  • 打赏
  • 举报
回复

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim ColStart, ColEnd, RowStart, RowEnd
    ColStart = Target.Column
    ColEnd = ColStart + Target.Columns.Count - 1
    RowStart = Target.Row
    RowEnd = RowStart + Target.Rows.Count - 1
    For i = ColEnd To ColStart Step -1
        For j = RowStart To RowEnd
            If Cells(i, j) <> "指定值" Then
                Columns(i).Delete
                Exit For
            End If
        Next j
    Next i
End Sub
X-i-n 2015-07-17
  • 打赏
  • 举报
回复
代码有bug.先不要用
X-i-n 2015-07-17
  • 打赏
  • 举报
回复
代码有bug.先不要用
zxcv780229 2015-07-17
  • 打赏
  • 举报
回复
感谢Runnerchin,问题可以解决,只是数据量大的时候,速度特别慢
X-i-n 2015-07-16
  • 打赏
  • 举报
回复
代码不应该成为首选的方案,你的这个需求用excel操作也可以完成,下面的代码在使用前先测试一下

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim ColStart, ColEnd, RowStart, RowEnd
    ColStart = Target.Column
    ColEnd = ColStart + Target.Columns.Count - 1
    RowStart = Target.Row
    RowEnd = RowStart + Target.Rows.Count - 1
    For i = ColStart To ColEnd
        For j = RowStart To RowEnd
            If Cells(i, j) <> "指定值" Then
                Columns(i).Delete
                Exit For
            End If
        Next j
    Next i
End Sub
zxcv780229 2015-07-16
  • 打赏
  • 举报
回复
可能我描述不是太清楚,在选 定区域内,只要单元格内容等于指定值就删除整列,不再考虑别的是不是不等于。比如选中了a2:a3 这个区域,a2等于指定值,将不再考虑a3的值,直接删除整列
X-i-n 2015-07-15
  • 打赏
  • 举报
回复
这么看的话需求不是很合理,或者是没有整理清楚,既然要删除列,说明这个列删不删完全取决于某一个单元格,如果单元格中出现冲突,如何取舍?比如选中了 a2:a3 这个区域,a2等于指定值,a3不等于指定值 另外,根据这个特性,看得出来这个表格存数据不是一行一行存的,而是一列一列存的,表头在列上,这种表结构也不是很妥当 楼主还需要再重新整理一下需求或者再补充一些细节

6,210

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office应用
社区管理员
  • Microsoft Office应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧