数码之家

 找回密码
 立即注册
搜索
查看: 710|回复: 8

[软件] 分享一个EXCEL的VBA

[复制链接]
发表于 2024-8-20 08:34:21 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 lqs1234 于 2024-8-20 08:35 编辑

有看懂的没?这样的VBA真是办公利器,可以减少不少工作程度,提高效率
Sub test()
Set Rng = [A1].CurrentRegion '选择A1所在的的连续数据区域的范围
h = 40
For Each cell In Rng '对于区域中的每一个单元格
    If IsError(cell.Value) Then
        If cell.Column Mod 5 = 0 Then
            Cells(h, 4).Resize(1, 3).Value = cell.Offset(0, -4).Resize(1, 3).Value
            h = h + 1
        End If
    End If
Next
End Sub

发表于 2024-8-20 09:25:55 | 显示全部楼层
上一个GIF动画演示图就好了
回复 支持 反对

使用道具 举报

发表于 2024-8-20 09:42:20 | 显示全部楼层
我是看不懂,尝试用手机AI模型弄了下,贴出来请大神看看AI的解答水平怎么样:

该段代码的用途是将数据区域中每隔4列的列数据进行移动到新的位置,每移动一次列数据,行号增加1。其中,Rng是当前活动单元格所在的连续数据区域的范围,h是用于控制新位置的行号。

具体实现步骤如下:

1. 定义变量Rng为当前活动单元格所在的连续数据区域的范围,使用Set关键字进行设置。

2. 定义变量h为行号,初始值为40。

3. 使用For Each...Next循环结构,遍历数据区域中的每个单元格。

4. 对于每个单元格,如果该单元格的值不是错误值,则跳过不做处理。

5. 如果该单元格的列号能够被5整除,则将该单元格及其左边3个单元格的数据复制到新位置,即Cells(h, 4)开始的位置,并将行号h加1。

6. 循环结束后,完成每隔4列的列数据的移动。
回复 支持 反对

使用道具 举报

发表于 2024-8-20 10:20:55 | 显示全部楼层
没看明白,感谢分享,学习一下
回复 支持 反对

使用道具 举报

发表于 2024-8-20 11:46:44 | 显示全部楼层
看不懂来学习一哈
回复 支持 反对

使用道具 举报

发表于 2024-8-20 15:47:21 | 显示全部楼层
结合上方翻译,我理解的是这样:
11 12 13 14 15 21 22 23 24 25 31 32……
变成从第40行4列开始输出
11 12 13
21 22 23
31 32  ……
不知道是不是这样,也不明白这样有什么便利,被称为办公利器
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-8-20 16:09:38 | 显示全部楼层
看来我们这个论坛的VBA没有行家呀,还是行家没出手?
回复 支持 反对

使用道具 举报

发表于 2024-8-20 16:28:00 | 显示全部楼层
日常工作中没有遇到过太复杂的应用
回复 支持 反对

使用道具 举报

发表于 2024-8-31 07:45:27 | 显示全部楼层
会VBA的话,有些工作确实能省不少事
回复 支持 反对

使用道具 举报

发表于 2025-4-4 07:01:44 | 显示全部楼层
感谢楼主提供分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-2 05:41 , Processed in 0.171600 second(s), 8 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表