求教大神 循环问题

DL_Zora 2021-01-27 10:50:18
我的循环重复了多次 但不太清楚应该怎么修改 求教大神



Sub Macro1()
'
' Macro1 Macro

Dim rw As Range
Dim i As Integer
For Each rw In Range("A2:F" & Range("A2").End(xlDown).Row)
For i = 1 To 6
If Cells(rw.Row, i) <> 0 Then
Cells(rw.Row, 8).Value = Cells(rw.Row, 8).Value & Cells(1, i)
Else
Cells(rw.Row,8).Value = Cells(rw.Row, 8).Value
End If
Next
Next

End Sub
...全文
286 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
smallspirite 2021-03-02
  • 打赏
  • 举报
回复
Sub Macro1()
'
' Macro1 Macro

Dim rw As Range
Dim i As Integer
For Each rw In Range("A2:F" & Range("A2").End(xlDown).Row)
    If rw <> 0 Then
        Cells(rw.Row, 8).Value = Cells(rw.Row, 8).Value & Cells(1, rw.Column)
    Else
        
    End If
Next

End Sub
wdubaiyu 2021-02-25
  • 打赏
  • 举报
回复
For Each rw In Range("A2:F" & Range("A2").End(xlDown).Row)这个就表示在每个单元格中循环,把 For i = 1 To 6循环移除掉
swhong 2021-02-25
  • 打赏
  • 举报
回复
在For Each 下一行 ,插入 debug.print rw.address ,看下循环结果
swhong 2021-02-25
  • 打赏
  • 举报
回复
For each 不是行循环,是单元格循环,即从选定的单元格区域(你的程序中选中的是A2:F5区域),从左到右,从上到下循环。 和For i= 1 to 6 重复了
不懂别说哎 2021-02-23
  • 打赏
  • 举报
回复
那这个循环我认为整体都错了,首先循环遍历A2:F5,然后再每个单元格循环6次,我是不是可以这么理解,一共24个单元格分别循环6次?我猜的,没这么用过
引用 6 楼 脆皮大雪糕 的回复:
[quote=引用 5 楼 不懂别说哎 的回复:] Range("A2:F" & Range("A2").End(xlDown).Row 我的意思是这个,这个代表了啥
Range.End 属性 返回一个 Range 对象,它表示包含源范围的区域末尾的单元格。 相当于按 End+向上键、End+向下键、End+向左键或 End+向右键。 此为只读 Range 对象。 语法 expression.End (Direction) expression 一个表示 Range 对象的变量。 从A2这个单元格往下,取有值的单元格力面的最后一个单元格的行号。和前面的“A2:F”拼接后用range() 提取到整个数据区域。 这种方法简单,但是如果A列里面有一个空单元格就会出乱子。[/quote]
脆皮大雪糕 2021-02-22
  • 打赏
  • 举报
回复
引用 5 楼 不懂别说哎 的回复:
Range("A2:F" & Range("A2").End(xlDown).Row 我的意思是这个,这个代表了啥
Range.End 属性 返回一个 Range 对象,它表示包含源范围的区域末尾的单元格。 相当于按 End+向上键、End+向下键、End+向左键或 End+向右键。 此为只读 Range 对象。 语法 expression.End (Direction) expression 一个表示 Range 对象的变量。 从A2这个单元格往下,取有值的单元格力面的最后一个单元格的行号。和前面的“A2:F”拼接后用range() 提取到整个数据区域。 这种方法简单,但是如果A列里面有一个空单元格就会出乱子。
不懂别说哎 2021-02-19
  • 打赏
  • 举报
回复
Range("A2:F" & Range("A2").End(xlDown).Row 我的意思是这个,这个代表了啥
jieru_liu 2021-02-19
  • 打赏
  • 举报
回复


Sub 方法一()

Dim rw%
Dim i As Integer

rw = Range("A2").End(xlDown).Row

For j = 2 To rw
For i = 1 To 6
If Cells(j, i) <> 0 Then
Cells(j, 8).Value = Cells(j, 8).Value & Cells(1, i)
Else
Cells(j, 8).Value = Cells(j, 8).Value
End If
Next
Next

End Sub


Sub 方法二()

Dim rw As Range
Dim i As Integer

For Each rw In Range("A2:F" & Range("A2").End(xlDown).Row)

If Cells(rw.Row, rw.Column) <> 0 Then
Cells(rw.Row, 8).Value = Cells(rw.Row, 8).Value & Cells(1, rw.Column)
Else
Cells(rw.Row, 8).Value = Cells(rw.Row, 8).Value
End If

Next

End Sub

不懂别说哎 2021-01-28
  • 打赏
  • 举报
回复
我怀疑你那个整体都写错了 For Each rw In Range("A2:F" & Range("A2").End(xlDown).Row) 这个是什么意思 我没用过.end这种的功能
DL_Zora 2021-01-27
  • 打赏
  • 举报
回复
就H列的结果应该是当前面的数不为0时,对应第一行的内容加和,H列正常应该是如下图,但是我的循环使得内容重复了很多次
不懂别说哎 2021-01-27
  • 打赏
  • 举报
回复
没明白你要表达什么……

2,464

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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