Heim >Software-Tutorial >Bürosoftware >Mein Excel enthält drei Datenspalten
Sub Sort1()
ActiveSheet.Sort.SortFields.Clear
ActiveSheet.Sort.SortFields.Add Key:=Range("A2:A" & Range("A1").CurrentRegion.Rows.Count) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveSheet.Sort.SortFields.Add Key:=Range("B2:B" & Range("A1").CurrentRegion.Rows.Count) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
Mit ActiveSheet.Sort
.SetRange Range("A1:C" & Range("A1").CurrentRegion.Rows.Count)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Bewerben
Ende mit
End Sub
Wenn Sie insgesamt 12 Zahlen von 0 bis 11 in Spalte A der Excel-Tabelle eingeben, entsprechend 12 Zufallszahlen in Spalte B eingeben und dann nach Spalte B sortieren, werden die Zahlen in Spalte A zufällig angeordnet
Hier wird die gleiche Idee verwendet, aber die zweidimensionale Tabelle wird durch ein zweidimensionales Array ersetzt. Der Code lautet wie folgt:
Dimmen Sie die Matrix (0 bis 11, 0 bis 1) als Single
Dim i als Ganzzahl, j als Ganzzahl
SngTemp als Single dimmen
Randomisieren
'Initialisieren Sie das Array so, dass die erste Zahl jeder „Zeile“ die Zeilennummer und die zweite Zahl eine Zahl zufälliger Größe ist
Für i = 0 bis 11
Matrix(i, 0) = i
Matrix(i, 1) = Rnd(100)
Weiter
Text1.Text = ""
'Da das Array klein ist, wird hier die Blasensortierung verwendet, um die N-größte Zahl herauszufiltern und in Text1 anzuzeigen
Für i = 0 bis 11
Für j = i + 1 bis 11
Wenn Matrix(j, 1) > Matrix(i, 1) Dann
sngTemp = Matrix(i, 1)
Matrix(i, 1) = Matrix(j, 1)
Matrix(j, 1) = sngTemp
sngTemp = Matrix(i, 0)
Matrix(i, 0) = Matrix(j, 0)
Matrix(j, 0) = sngTemp
Ende wenn
Weiter
Text1.Text = Text1.Text & vbCrLf & Matrix(i, 0)
Weiter
Frage 1
Private Sub CommandButton1_Click()
Dim i, j As Long
Sheets("sheet2").Cells.ClearContents
Sheets("sheet1").Cells.Copy
Blätter("Blatt2").Auswählen
Sheets("sheet2").Range("A1").Select
ActiveSheet.Paste
i = 3
Do While Sheets("sheet2").Range("A" & i).Value ""
Für j = 2 bis i - 1
If Sheets("sheet2").Range("A" & i).Value > Sheets("sheet2").Range("A"& j).Value Then
Sonst
Sheets("sheet2").Rows(i & ":" & i).Cut
Sheets("sheet2").Rows(j & ":" & j).Insert Shift:=xlDown
Beenden für
Ende wenn
Nächstes j
i = i + 1
Schleife
End Sub
Frage 2
Private Sub CommandButton1_Click()
Dim i, j As Long
Sheets("sheet2").Cells.ClearContents
Sheets("sheet1").Cells.Copy
Blätter("Blatt2").Auswählen
Sheets("sheet2").Range("A1").Select
ActiveSheet.Paste
i = 3
Do While Sheets("sheet2").Range("A" & i).Value ""
Für j = 2 bis i - 1
If Sheets("sheet2").Range("C" & i).Value & Sheets("sheet2").Range("D" & i).Value > Sheets("sheet2").Range("C" & j).Value & Sheets("sheet2").Range("D" & j).Value Then
Sonst
Sheets("sheet2").Rows(i & ":" & i).Cut
Sheets("sheet2").Rows(j & ":" & j).Insert Shift:=xlDown
Beenden für
Ende wenn
Nächstes j
i = i + 1
Schleife
End Sub
Das obige ist der detaillierte Inhalt vonMein Excel enthält drei Datenspalten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!