我有3列我想在这里工作,D,E,& F.这一切都在同一张纸上。细胞D2& down包含数据。 F2&在某些单元格中有日期,在其他单元格中有空白。我想要做的是如果F2和F2列中的任何一个单元格。 down包含日期,将D2中的相应单元数据剪切/粘贴到E2。我不想只是复制和粘贴,因为我希望从D2中删除信息。
我不是在寻找一个公式,因为我这样做符合其他vba任务。下面的例子是顶部的原始和我在底部寻找的内容。
任何帮助将不胜感激。对不起,我没有任何代码,因为我已经环顾四周但感到困惑。
C D E F
MFR Cat# IVC# Date
MMM 1
MMM 721490 10/19/17
MMM 2
MMM 723355 10/20/17
MMM 702107 10/20/17
MMM 702645 10/21/17
MMM 3
MMM 4
MMM 745824 10/12/17
C D E F
MFR Cat# IVC# Date
MMM 1
MMM 721490 10/19/17
MMM 2
MMM 723355 10/20/17
MMM 702107 10/20/17
MMM 702645 10/21/17
MMM 3
MMM 4
MMM 745824 10/12/17
答案 0 :(得分:1)
也许这可能会有所帮助:
Sub IsDateInCell()
Dim countRows As Long
Dim i As Long
countrow = Range(Range("D1"), Range("D1").End(xlDown)).Count
For i = 1 To countrow
If IsDate(Cells(1 + i, 6)) Then
Cells(1 + i, 4).Cut
Cells(1 + i, 5).PasteSpecial (xlPasteAll)
End If
Next i
End Sub
答案 1 :(得分:0)
我假设您将在第1行开始此范围。您可以在"设置rng"设置起始单元格。线,改变" B1"无论你真正的第一个细胞是什么。此外,这假设您的范围不直接与任何其他信息接壤(换句话说,范围是隔离的)子条例使用范围内每个单元格的简单循环,当条件为' IF&#39 ;如果是,则会发生剪切/粘贴。
我添加了#34; Application.ScreenUpdating = False"如果您的实际行数非常大。
Dim rng As Range
Dim cell As Range
Dim nMFR As Long
Dim nCAT As Long
Dim nIVC As Long
Dim nDATE As Long
Application.ScreenUpdating = False
Set rng = Range("B1").CurrentRegion
nDATE = rng.Columns(rng.Columns.Count).Column
nMFR = nDATE - 3
nCAT = nDATE - 2
nIVC = nDATE - 1
For Each cell In rng.Cells
If cell.Row > 1 And cell.Column > nMFR And Cells(cell.Row, nDATE) <> "" And Cells(cell.Row, nIVC) = "" Then
Cells(cell.Row, nCAT).Cut Destination:=Cells(cell.Row, nIVC)
End If
Next cell
Application.ScreenUpdating = True
答案 2 :(得分:0)
你可以用这个:
Sub Main()
With Range("F2", Cells(Rows.Count, "F").End(xlUp)).SpecialCells(xlCellTypeConstants)
.Offset(, -1).Value = .Offset(, -2).Value
.Offset(, -2).ClearContents
End With
End Sub