根据来自不同小区

时间:2018-05-11 17:47:05

标签: excel vba

我有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

3 个答案:

答案 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