在Col U中查找第一个空单元格,然后从Col O复制/粘贴相邻的值
我一直在与我认为会是一个非常简单/简单的一段代码挣扎。
我想要创build一个循环来findCol U中的第一个空单元格,并将Col O中的相邻值(数字代表月)复制到Col U中的空单元格,但将该数字转换为月份名称。
我只想让这个循环在工作表“调整”中运行,当新的条目被创build时,自动将月份名称转换到Col U(从Col O中的#号)。
到目前为止我已经pipe理这个:
Sub MonthName() Dim ws As Worksheet Set ws = Sheets("Adjustments") For Each cell In ws.Columns(21).Cells If Len(cell) = 0 Then cell.Offset(0, -6).Copy: Exit For Next cell End Sub
真的很感谢任何帮助!
build议您使用Find
来获取第一个空白单元而不是循环。
如果你想这个自动运行,你可以触发它从表更改事件(当一个特定范围的单元格更新,或select,或计算等)。
Dim ws As Worksheet Dim rng1 As Range Set ws = Sheets("Adjustments") Set rng1 = ws.Columns("U").Find("", ws.Cells(ws.Rows.Count, "U"), xlFormulas, xlWhole) If Not rng1 Is Nothing Then rng1.Value = Format(ws.Cells(rng1.Row, "O") + 1, "mmm")
更新
- 右键单击名为调整的表
- 查看代码
- 复制并粘贴在下面的代码
码
Private Sub Worksheet_Change(ByVal Target As Range) Dim ws As Worksheet Dim rng1 As Range Dim rng2 As Range Set rng1 = Intersect(Columns("O"), Target) If rng1 Is Nothing Then Exit Sub Set rng1 = Columns("U").Find("", Cells(Rows.Count, "U"), xlFormulas, xlWhole) If Not rng1 Is Nothing Then Application.EnableEvents = False rng1.Value = Format(Cells(rng1.Row, "O") + 1, "mmm") Application.EnableEvents = True End If End Sub
If Len(Trim(cell.Value)) = 0 Then cell.Value = MonthName(cell.Offset(, -6).Value)
并删除那个Exit For
如果你想改变U
列的所有空单元格不只是第一个。 否则保留它。