Excel VBA - 将值定义为单元格位置,复制到相同单元格位置下方,粘贴

时间:2015-08-19 08:14:09

标签: excel vba

所以我在excel中有这个Visual Basic代码:

Sub Tele()

    Dim rowLoop As Long
    rowLoop = 1
    strValueToFind = InputBox("Enter a Search value in format xx.xx.xxxx")
    ' Loop row A to find value, number corrosponds to letter position in alphabet
    For rowLoop = 1 To Columns.Count
        If Cells(3, rowLoop).Value = strValueToFind Then ' If value is in C then do something
            ' start on cell found from date needed - look at copying range on same Column

            Sheets("Vessels").Range("C10:C13").Value = Sheets("Tidal").Range("D4:D7").Value
            Sheets("Vessels").Range("D10:D13").Value = Sheets("Tidal").Range("D9:D12").Value
            MsgBox ("Found value on col " & rowLoop) '
            Exit Sub
        End If
    Next rowLoop ' This is row number, do something with this

    ' This MsgBox will only show if the loop completes with no success
    MsgBox ("Date not found, make sure you have input the date correctly")

End Sub

代码在工作表中查找日期,并根据该单元格复制数据。 我需要的是让它变得自动化。

问题:
在C或Python中,我会抓住发现的'作为一种价值。然后,我会在范围内使用该值来表示列字母,以便基于找到的'单元格。它会复制同一列下面的行并粘贴到同一列上的新工作表中,一个单元格向下并粘贴在horrizontal而不是verticle。
简而言之,如果日期在C列上,则复制下面的数据在同一列上。 然后粘贴到预定位置(在这种情况下为C10:C13和D10:D13),用于在另一张纸上显示多个数据字段。一旦我掌握了基本概念,该方法只需要外推来填充其余的功能。 有什么想法吗?

简化程序应该是这样的:
输入号码 查找数据显示的列,并将其定义为' DATACELLFOUND'
复制三个单元格,下面一个单元格' DATACELLFOUND'并粘贴到C10:C13中 从下面的六个单元格开始复制三个单元格' DATACELLFOUND'并粘贴到D10:D13。

提前谢谢!

2 个答案:

答案 0 :(得分:0)

尝试使用此功能获取找到数据的列。

 Public Function columnletter(i As Integer)
If i > 26 Then
    columnletter = Chr(Int((i - 1) / 26) + 64) & Chr(((i - 1) Mod 26) + 65)
Else
    columnletter = Chr(i + 64)
End If
End Function

答案 1 :(得分:0)

要解决此问题,请使用

Sheets("Vessels").Range("C10:C13").Value = Cells(3, rowLoop).Offset(1,0).Resize(4).Value
Sheets("Vessels").Range("D10:D13").Value = Cells(3, rowLoop).Offset(6,0).Resize(4).Value

注意:

如果您未指定Sheet,则所有Cells次来电都会引用活动表,这可能会导致问题。如果您想要在Tidal表格中搜索,请使用Sheets("Tidal").Cells(...

查看Range.Find方法,可以避免循环细胞。