前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ExceLVBA学习笔记之Find+多列多行删除+列数字与列字母互转

ExceLVBA学习笔记之Find+多列多行删除+列数字与列字母互转

作者头像
哆哆Excel
发布2022-10-25 12:45:36
1.6K0
发布2022-10-25 12:45:36
举报
文章被收录于专栏:哆哆Excel哆哆Excel

整理工资表时:有如下工作

  1. 删除后面我工作时辅助的列,它是辅助的,没有必要下发
  2. 删除后面的行,它也是辅助的,没有必要下发

问题是:从那一列开始到那一列要删除,从那一行开始到那一列要删除

--------【思路方法】--------

列可以查找到“备注”所在的列,后面的都不要了

列可以查找到“合计”所在的行,后面的都不要了

--------【开始工作】--------

思路开始:例:

用columns(“26:40”).delete

Rows(“2474:2484”).deleteShift:=xlToLeft

--------【出现问题】--------

行的删除可以啦,但列的删除出问题了columns(“26:40”).deleteShift:=xlUp

--------【学习】--------

通过百度查找问题:学习知识:

Part 1:多行删除

<1>通过Rows和Range两种方法都可以

<2>多行使用行号数字来表示,注意需将行号放入双引号中""

Sub 多行删除()

Set te = ThisWorkbook.Worksheets("示例")

'te.Rows("3:5").Delete Shift:=xlUp

te.Range("3:5").Delete Shift:=xlUp

End Sub

========================

Part 2:多列删除

<1>通过Columns和Range两种方法都可以

<2>列号使用字母表示,注意需将行号放入双引号中""

<3>当使用数字表示列号时,报错

Sub 多列删除()

Set te = ThisWorkbook.Worksheets("示例")

te.Columns("B:D").Delete Shift:=xlToLeft

' te.Range("B:D").Delete Shift:=xlToLeft

End Sub

========================

--------【解决方法】--------

可以先用列数字转化为列字母,再进行删除就可以

--------【知识点1】--------

Address属性的语法如下:

Range对象.Address(RowAbsolute, ColumnAbsolute,ReferenceStyle, External,RelativeTo)

说明:

所有参数均为可选项。

参数RowAbsolute设置为True,则返回的地址行部分为绝对引用。默认值为True。

参数ColumnAbsolute设置为True,则返回的地址的列部分为绝对引用。默认值为True。

参数ReferenceStyle设置返回的地址的引用样式,可以设置为xlA1(A1样式)或xlR1C1(R1C1样式)。默认值为xlA1。

参数External设置为True,返回的地址包含工作簿名和工作表名。设置为False,返回本地地址(即不带工作簿名和工作表名)。默认值为False。

如果参数RowAbsolute和ColumnAbsolute设置为False,参数ReferenceStyle设置为xlR1C

代码:

ActiveCell.Address

返回当前工作表中当前单元格的地址。

代码:

Selection.Address

返回当前工作表中所选区域的地址。

代码:

Range('A1').CurrentRegion.Address

返回当前工作表中单元格A1所在单元格区域的地址。

代码:

ActiveSheet.UsedRange.Address

返回当前工作表中已使用单元格区域的地址。

例子:

Set mc = sheets(1).Cells(1, 1)

mc.Address —— 返回"

mc.Address(0,0) —— 返回 "A1"

简单的说:

Address(0, 0) 相对引用

Address(1, 1) 绝对引用

Address(1, 0) 混合引用(相对列绝对行)

Address(0,1) 混合引用 (相对行绝对列)

【解决代码】字母=Replace(Cells(1, 数字).Address(False, False), "1", "")

解析:先用cells取得第一行第几列的地址的相对位置如:D1,再用replace把1替换为空就可以啦

问题延伸:如果知识列字母如何求列数字呢

我们可以取得“a1:字母1”范围的总列数count就是所要的列数啦

Sub in字母get数字()

' Dim a As String

a= InputBox(prompt:="请输入列字母")

If a <> "" Then

MsgBox Range("a1:" & a & "1").Count

‘取得这个范围的总列数就是我们要的列数字啦

Else

MsgBox "你没输入"

Exit Sub

End If

End Sub

--------【最后完成的代码】--------

--------【小结】--------

1.Find方法,2.多列多行删除,3.列数字与列字母互转

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 哆哆Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档