[在回答之前,这是我对事情的看法:]
我认为您在这里要问的问题是“如何找到最后一个非空行”。
我之所以没有将其标记为一个,是因为您可能没有意识到您实际上应该问这个问题。
一般来说(听起来没有居高临下的意思)你可能应该先学习编程基础知识,然后再在这里提出这样的问题。在某个地方学习一些基础课程(有很多),然后才开始尝试一些编码,因为如果您缺少编码基础,那么您将永远无法理解其背后的更大图景
您在这里试图描述的是编程语言中的一个基本循环。
循环如何工作?
假设我们是一台计算机,我们也可以说话(用人类语言,而不是二进制 1 和 0)。
- 我想遍历动态范围内的所有单元格
- 我需要知道动态范围从哪里开始和结束(取我的结束点)
- 我将从起点开始,在终点结束(呃,愚蠢的人类应该知道...)
-
对于范围内的每个和每个单元格,我都会执行特定操作。
- 就是这样,相当简单。只需几秒钟。
如果我们试图准确地代表我在这里描述的内容:
Option Explicit ' < prevents you from typos, undeclared variables and so on...
Private Sub eachActiveCell()
Dim actionrange as Range
Dim lastrow as Long
lastrow = Sheets("Your Sheet Name").Cells(Rows.Count, "A").End(xlUp).Row
'finds last (active) row ^
Set actionrange = Sheets("Your Sheet Name").Range(Cells(1, "A"), Cells(lastrow, "A"))
' this sets our range to (A1:A <lastrow>) ^
Dim cell as Range
For each cell in actionrange
cell.Offset(0, 2) = cell.Value2 ' utilizes offset, A1 offset by 2 columns = C1
Next cell
End Sub
其他选择,因为使用行而不是范围可能更容易理解。
Option Explicit
Private Sub foriinA()
Dim ws as WorkSheet: Set ws = Sheets("Your Sheet Name")
Dim lastrow As Long
lastrow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
Dim i As Long
For i = 1 To lastrow
ws.Cells(i, "C") = ws.Cells(i, "A")
Next i
End Sub