所以我在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。
提前谢谢!
答案 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
方法,可以避免循环细胞。