|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
第一次代码有问题,没有理解意思,现在已调试AI写出完整代码。有想研讨如何使用AI写代码的,可以关注我微信公众号【ExcelAIhelper】
- Sub ReplaceIColumnWithEColumn_Corrected()
- Dim ws As Worksheet
- Dim lastRowE As Long, lastRowI As Long, lastRow As Long
- Dim i As Long
- Dim dataArrayI As Variant
- Dim dataArrayE As Variant
-
- ' 遍历所有工作表
- For Each ws In ThisWorkbook.Worksheets
- ' 找到当前工作表 E 列和 I 列的最后一行
- lastRowE = ws.Cells(ws.Rows.Count, "E").End(xlUp).Row
- lastRowI = ws.Cells(ws.Rows.Count, "I").End(xlUp).Row
- lastRow = Application.Max(lastRowE, lastRowI) ' 取 E 列和 I 列的最大行号
-
- ' 如果工作表没有数据,跳过
- If lastRow < 1 Then GoTo NextSheet
-
- ' 将 I 列和 E 列的数据加载到数组中
- dataArrayI = ws.Range("I1:I" & lastRow).Value
- dataArrayE = ws.Range("E1:E" & lastRow).Value
-
- ' 遍历 I 列的数组,获取 I 列的值作为行号
- For i = 1 To lastRow
- If Not IsEmpty(dataArrayI(i, 1)) And IsNumeric(dataArrayI(i, 1)) Then
- ' 获取 I 列的值作为行号
- Dim targetRow As Long
- targetRow = CLng(dataArrayI(i, 1)) ' 将值转换为 Long 类型
-
- ' 检查行号是否在有效范围内
- If targetRow > 0 And targetRow <= lastRow Then
- ' 用 E 列对应行的值替换 I 列的值
- dataArrayI(i, 1) = dataArrayE(targetRow, 1)
- Else
- ' 如果行号无效,可以选择清空或保留原值
- dataArrayI(i, 1) = Empty
- End If
- Else
- ' 如果 I 列的值不是数字,清空或保留原值
- dataArrayI(i, 1) = Empty
- End If
- Next i
-
- ' 将修改后的数组写回 I 列
- ws.Range("I1:I" & lastRow).Value = dataArrayI
-
- NextSheet:
- Next ws
-
- MsgBox "所有工作表的 I 列数据已替换完成!", vbInformation
- End Sub
复制代码 |
评分
-
1
查看全部评分
-
|