批量修改数据_Excel应用实践02:批量修改多个工作簿文件中同一位置的数据

使用VBA脚本解决批量修改Excel文件问题,针对特定单元格G27和G54,将**.**KN格式自动转换为***.*KN,降低手动操作的工作量。

学习Excel技术,关注微信公众号:

excelperfect

最近,有位朋友咨询

“有很多Excel文件是从软件中直接生成的,有些数据**.**KN是软件自动填写上去的,但是因为数据单位的问题,每次都需要将其手动更改为***.*KN。一般来说,都是几十个这样的文件,手动修改的工作量很大,所以想请教一下,看有没有简便的方法。”

他给的工作簿中,要修改两个位置的数据,分别为单元格G27和G54,其格式都是**.**KN,将其修改为***.*KN。如下图1所示。

d5a664c0db16f6312f6265102385cb7a.png

图1

使用VBA可以完成上述任务。代码如下:

Sub DatasArrange()

    Dim strPath As String

    Dim strName As String

    Dim Wb As Workbook

    Dim rng1 As Range

    Dim rng2 As Range

    '获取文件夹路径和工作簿

    strPath = ThisWorkbook.Path &"\"

    strName = Dir(strPath &"*.xls*")

    On Error Resume Next

    Application.ScreenUpdating = False

    '遍历文件夹中的工作簿

    '代码所在的工作簿除外

    Do While strName <> ""

        If strName <> ThisWorkbook.NameThen

            Set Wb = Workbooks.Open(strPath& strName)

            '要修改的单元格

            '可根据实际调整

            Set rng1 = Range("G27")

            Set rng2 = Range("G54")

            '传递到修改值的子过程

            ModifyDatas rng1, rng2

            '关闭并保存工作簿

            Wb.Close True

        End If

        '获取下一个工作簿

        strName = Dir

    Loop

    Application.ScreenUpdating = True

End Sub

'修改所接收的单元格中的值

Sub ModifyDatas(rng1 As Range,rng2 As Range)

    On Error Resume Next

    '加一个判断条件,防止每运行一次就更改单元格值

    If Mid(rng1, Len(rng1) - 3, 1) <>"." Then

        rng1.Value = Left(rng1.Value,Len(rng1.Value) - 2) * 10 & "KN"

    End If

    If Mid(rng2, Len(rng2) - 3, 1) <>"." Then

        rng2.Value = Left(rng2.Value,Len(rng2.Value) - 2) * 10 & "KN"

    End If

End Sub

DatasArrange过程遍历工作簿所在文件夹中除本工作簿以外的所有工作簿,将工作簿中当前工作表单元格G27和G54中的值进行修改,关闭并保存修改后的工作簿。

运行DatasArrange过程,批量修改文件夹中的工作簿,达到图1所示的效果。

代码图片版如下:

a080afb971fabbe01f29c39f84f07e2c.png

9c0e0d9e49c3aec7be6d5bb8ef0c4201.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值