Rows("1:1").Select
Set rng1 = Selection.Find(What:="FinalFSU", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
Selection.Find(What:="FinalFSU", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.EntireColumn.Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range("rng1" & LR).Formula = "=VLOOKUP(A2,'RETURNED'!A:T,20,0)"
上面是我尝试在电子表格中实现的代码示例。
我需要什么:
我有A,B,C,D等列。我需要找到每个列并获取第一个单元格的地址或范围。列通常以不同的方式排序,因此它可能是B,C,A,D等。我可以找到标题名称,我可以选择整个列但是如何获取单元格地址以便我可以在我的VLOOKUP中使用它?
最后一个字符串实际上显示了我需要使用实际范围值的位置。
我很感激任何帮助,因为我花了一整天的时间尝试不同的方法来解决这个问题,但它并没有奏效。谢谢!
答案 0 :(得分:0)
首先,在您的代码中,'rng1'是一个包含单个单元格的范围,因此您的最后一行可能会变为:
rng1.Formula = "=VLOOKUP(A2,'RETURNED'!A:T,20,0)"
我可能还会用rng1.Activate
要获取单元格行/列详细信息,您可以选择以下几种方法:
您可以使用rng1.Row和rng1.Column来获取数字位置。
您可以使用仅需要数字的Range
语法,而不是使用需要字母和数字的Cells
语法。所以rng1的位置可以描述为:
Cells(rng1.Row, rng1,Column)
或者,如果您真的想坚持使用字母/数字描述,则可以使用Address
属性。因此rng1.Address
会返回一个价值$ C $ 1或类似值,具体取决于其实际位置。
答案 1 :(得分:0)
您的代码将受益于许多更改。
使用Select和/或Activate是没有必要的,而且效率很低,除非在非常特殊的情况下,您的代码片段中不存在任何内容。将rng1设置为包含 FinalFSU 的第1行中的单元格的更好代码将是:
Dim rng1 As Range
With Rows(1).Cells
Set rng1 = .Find(what:="FinalFSU", after:=.Item(1, 1), LookIn:=xlFormulas, _
lookat:=xlPart, MatchCase:=False)
End With
'optional test for non-existence of FinalFSU
If rng1 Is Nothing Then
MsgBox "Could not find FinalFSU"
Exit Sub
End If
在插入新列之前,同样不需要选择整个列。
在最后一行代码中,您已将变量 rng1 放在引号内。然后,这变成字符串rng1,它是单元格地址(第1行,第12539行)。我怀疑这是你真正想要的。查找Range对象的语法。
你永远不会定义LR。我认为它是与rng1在同一列中的最后一行。获得从同一列中的rng1到最后一行的范围的另一种方法是:
Range(rng1, Cells(Rows.Count, rng1.Column).End(xlUp))
尝试这些建议,如果继续遇到问题,请回复。