Я начинающий в макросах Excel. Я собрал этот макрос, кажется, он работает нормально, пока не достигнет строк 37-209 и 307-444. Я пытаюсь выяснить, почему он пропускает эти конкретные строки.
Макросы должны сортировать 1-й блок данных по идентификационному номеру, а затем сортировать 2-й блок данных на том же листе по идентификатору. номер. Эта часть работает отлично. Как только это будет сделано, предполагается сместить строки данных, чтобы они соответствовали идентификационным номерам. В итоговом отчете должны быть одинаковые идентификационные номера в одной строке.
Я пытался убедиться, что номера были в одном и том же формате, результаты были одинаковыми.
Первый блокданные могут иметь:
DUMMY DATA
"Account Number" "First Name" "Last Name" "Current" "Etc."
==========================================================
1001 | A | A | 1 | X
1002 | B | B | 1 | X
1003 | C | C | 1 | X
1004 | D | D | 1 | X
1005 | E | E | 1 | X
1006 | F | F | 1 | X
1007 | G | G | 1 | X
1008 | H | H | 1 | X
1009 | I | I | 1 | X
1010 | J | J | 1 | X
1011 | K | K | 1 | X
1012 | L | L | 1 | X
1013 | M | M | 1 | X
1014 | N | N | 1 | X
1015 | O | O | 1 | X
1016 | P | P | 1 | X
1017 | Q | Q | 1 | X
1018 | R | R | 1 | X
Второй блок данных может иметь:
DUMMY DATA
"Account Number" "Balance" "Principle" "Last Payment" "Etc."
===============================================================
1001 | $1.00 | $0.50 | $1.00 | X
1002 | $1.00 | $0.50 | $1.00 | X
1003 | $1.00 | $0.50 | $1.00 | X
1004 | $1.00 | $0.50 | $1.00 | X
1008 | $1.00 | $0.50 | $1.00 | X
1009 | $1.00 | $0.50 | $1.00 | X
1010 | $1.00 | $0.50 | $1.00 | X
1011 | $1.00 | $0.50 | $1.00 | X
1012 | $1.00 | $0.50 | $1.00 | X
1016 | $1.00 | $0.50 | $1.00 | X
1017 | $1.00 | $0.50 | $1.00 | X
1018 | $1.00 | $0.50 | $1.00 | X
Макросы, кажется, имеют проблемы с совпадением номеров счетов.
Sub MANIP_TEST_Sort()
'sorts the left most set of data in numerical order by ID
Columns("A:H").Select
ActiveSheet.Sort.SortFields.Clear
ActiveSheet.Sort.SortFields.Add Key:=Range("A1"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveSheet.Sort
.SetRange Range("A:H")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'sorts the right most set of data in numerical order by ID
Columns("K:V").Select
ActiveSheet.Sort.SortFields.Clear
ActiveSheet.Sort.SortFields.Add Key:=Range("K1"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveSheet.Sort
.SetRange Range("K:V")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Shifts cells to line up matching ID
lr1 = Range("A" & Rows.Count).End(xlUp).Row
lr2 = Range("K" & Rows.Count).End(xlUp).Row
LR = WorksheetFunction.Min(lr1, lr2)
i = 0
Do While (i <= LR)
a = Range("A2" & i)
k = Range("K2" & i)
If Not (a = b) Then
If (Range("A2" & i) > Range("K2" & i)) Then
Range("A2" & i, "H2" & i).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Else
If (Range("A2" & i) < Range("K2" & i)) Then
Range("K2" & i, "V2" & i).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End If
End If
End If
i = i + 1
lr1 = Range("A" & Rows.Count).End(xlUp).Row
lr2 = Range("K" & Rows.Count).End(xlUp).Row
LR = WorksheetFunction.Min(lr1, lr2)
Loop
End Sub