我有一张桌子(6K记录)就像这样(完全未分类):
Item | Subitem --------|--------- 71 | 51 71 | 51 53 | 54 51 | 52 71a | 51a 71a | 51a 53 | 54 51 | 52 53 | 54 53 | 54 52a | 53a 52 | 53 51a | 52a
基本上,它是一个多级项目结构,意味着在7 *内部,有一个5 *,也许在5 *内部,还有另外5 *等等; 我想要的是,第一列中的所有内容都被第一个级别的项目取代,该项目始终以7 *开头。 哪个最终会是这样的;
Item | Subitem --------|--------- 71 | 51 71 | 51 71 | 54 71 | 52 71a | 51a 71a | 51a 71 | 54 71 | 52 71 | 54 71 | 54 71a | 53a 71 | 53 71a | 52a
我有以下代码,但它似乎不起作用,因为我得到了很多5 *作为第一级项目
For i = 1 To LastRow
mat_A = Cells(i, 1).Value
type_A = Left(mat_A, 1)
mat_B = Cells(i, 2).Value
type_B = Left(mat_B, 1)
If type_A = 7 Then
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Replace What:=mat_B, Replacement:=mat_A, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End If
Next i
有人对此有一些建议吗?
答案 0 :(得分:0)
如果你想要的就像你描述的那样:
将无71
项目更改为71
项目,然后您可以使用此项目:
Sub test()
Dim ws As Worksheet, rng, cel As Range, lrow As Long
Set ws = ThisWorkbook.Sheets("Sheet1")
With ws
lrow = .Range("A" & .Rows.Count).End(xlUp).Row
Set rng = ws.Range("A2:A" & lrow)
For Each cel In rng
If Left(cel.Value, 1) <> "7" Then
If IsNumeric(cel.Value) Then
cel.Value = 71
Else
cel.Value = 71 & Mid(cel.Value, 3, Len(cel.Value) - 2)
End If
End If
Next cel
End With
End Sub
此代码使用Item
更改71
列中所有值的前2个字符
假设您的数据位于Column A & B
现在,如果您有其他要求,请更新您的问题。 :)