在Col U&找到第一个空单元格。从Col O复制/粘贴相邻值

时间:2017-03-09 02:05:35

标签: excel vba excel-vba

我一直在努力学习我认为非常简单/简单的代码。

我想创建一个循环来查找Col U&中的第一个空单元格。将Col O中的相邻值(代表月份的数字)复制到Col U中的空单元格,但将该数字转换为月份名称。

我希望此循环仅在工作表“调整”中运行,自动将月份名称转换为Col U(来自Col in中的#)作为新条目。

到目前为止,我已经成功了:

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

enter image description here

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

If Len(Trim(cell.Value)) = 0 Then cell.Value = MonthName(cell.Offset(, -6).Value)

并删除Exit For如果您要更改列U上的所有空单元格,而不仅仅是第一个。否则保留它。

答案 1 :(得分:0)

建议您使用Find获取第一个空白单元而不是循环。

如果您希望自动运行,可以从工作表更改事件(更新,选择或计算特定范围的单元格等)触发它。

 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")

更新

  • 右键单击名为 adjust
  • 的工作表
  • 查看代码
  • 复制并粘贴以下代码

代码

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