Mein Excel enthält drei Datenspalten

王林
Freigeben: 2024-01-23 09:06:07
nach vorne
743 Leute haben es durchsucht

Mein Excel enthält drei Datenspalten

Ich habe ein Excel mit drei Datenspalten. Ich möchte die Sortierfunktion über VB implementieren

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

VB-Array-Sortierproblem

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

Problem bei der Sortierung der Excel-VBA-Makrosprache bei Bildern

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!

Verwandte Etiketten:
Quelle:docexcel.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!