在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列的所有空单元格不只是第一个。 否则保留它。