我有一个数据表,需要根据A列中的值更改某些值。数据位于一个名为Analysis \ xx的列中,其中xx是1到60之间的变量值。列数不同每行,以便第4行可以上升到Analysis \ 4而第5行可能上升到Analysis \ 30。 Analysis \ xx字段中出现的每个值都需要更新,其中A列中存在特定值。
我有基于单个固定列位置更新值的代码,但我正在努力解决如何遍历每一行以更新可变数量的列。
任何建议都会感激不尽。
我附上了下面的数据样本,其中显示了很好的变体选择,其中不需要修改的列隐藏了。第26行实际上一直到第NB列。
答案 0 :(得分:0)
Sub Macro1()
Cells.Replace What:="TEST1", Replacement:="Test2", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
答案 1 :(得分:0)
假设您的表有一个名称,您可以使用以下代码遍历A列的每一行,在这种情况下,只需在同一行中打印一列的值。
Sub Tester()
Dim rg As Range
Dim rgA As Range
Dim sngCell As Range
Set rg = Range("Your TableName")
Set rgA = rg.Columns(1)
For Each sngCell In rgA.Rows
Debug.Print sngCell.Offset(, 3).Value2
Next
End Sub
该代码是否朝着正确的方向发展?
编辑:假设您使用listobject,此代码可能会帮助您
Sub ChangeTable()
Const ACCT_NO = "ABCD1234"
Const HEADING = "Analysis*"
Const NEW_VAL = "80321"
Dim tbl As ListObject
Dim x As Long
Dim i As Long
Dim hdrCount As Long
Set tbl = ActiveSheet.ListObjects("Your Name here")
hdrCount = tbl.HeaderRowRange.Columns.Count
For x = 1 To tbl.ListRows.Count
With tbl.ListRows(x)
If .Range(1, 1).Value2 = ACCT_NO Then
For i = 2 To hdrCount
If tbl.HeaderRowRange(i).Value2 Like HEADING Then
.Range(1, i).Value = NEW_VAL
End If
Next
End If
End With
Next
End Sub