Heim >Software-Tutorial >Bürosoftware >Makro, das eine Excel-Tabelle in 300 Zeilen pro Blatt aufteilt
Public Sub mySub()
Dim shS As Worksheet: Set shS = ActiveSheet 'Quelldatenblatt, aktuell aktives Blatt
Dim rS&: rS = 1 'Quelldatentabelle, beginnen Sie mit dem Lesen der Daten aus dieser Zeile
Dim rC&: rC = 300 'Die Anzahl der jedes Mal gelesenen Zeilen
Dim rNew$: rNew = 1 'Erstellen Sie eine neue Tabelle und fügen Sie die Daten in diese Zeile ein
Dim rZ&: rZ = shS.UsedRange.Row + shS.UsedRange.Rows.Count - 1
Dim shNew As Worksheet, nm$, n%, r&
r = rS
Do While r
n = n + 1
Set shNew = Worksheets.Add(after:=Sheets(Worksheets.Count))
nm = „table“ & rC & „__“ & n
Ruf ShNm(shNew, nm)
shS.Rows(r).Resize(rC).Copy shNew.Rows(rNew)
r = rC * n + rS
Schleife
MsgBox „ok“
End Sub
Public Sub ShNm(sh als Arbeitsblatt, nm als Variante)
Bei Fehler Fortsetzung fortsetzen
100:
sh.Name = nm
Wenn Fehlernummer 0, dann
Err.Clear
nm = Application.InputBox( _
"" " & nm & " " existiert bereits! " & Chr(10) & Chr(10) & "Bitte geben Sie einen neuen Tabellennamen ein: ", _
"Bitte geben Sie den neuen Tabellennamen ein", nm & "_new", _
Typ:=2)
Wenn nm = False Then MsgBox „Die Eingabe ist falsch, beenden Sie das Programm!“: Ende
Gehe zu 100
Ende wenn
End Sub
Sub Macro6()
'
' Makro6 Makro
'
'
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semikolon:=Falsch, Komma:=Falsch, Leerzeichen:=Falsch, Andere:=Wahr, OtherChar _
:="*", FieldInfo:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
Spalten("A:A").Auswählen
Selection.Replace What:="PL", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Spalten("C:D").Auswählen
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Bereich("C1").Auswählen
ActiveCell.FormulaR1C1 = "=MIN(RC[-2],)"
Bereich("C1").Auswählen
ActiveCell.FormulaR1C1 = "=MIN(RC[-2],RC[-1])"
Bereich("D1").Auswählen
ActiveCell.FormulaR1C1 = "=MAX(RC[-3],RC[-2])"
Bereich("C1:D1").Auswählen
Selection.AutoFill Destination:=Range("C1:D1000")
Bereich("C:D").Auswählen
Spalten("A:B").Auswählen
Bereich("B1").Aktivieren
Spalten("C:D").Auswählen
Auswahl.Kopieren
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=Falsch, Transponieren:=Falsch
Spalten("A:B").Auswählen
Bereich("B1").Aktivieren
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Spalten("A:B").Auswählen
Selection.Replace What:="0", Replacement:="", LookAt:=xlWhole, _
_
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
Hinweis: Wenn Sie es verwenden, wählen Sie zuerst Spalte A aus und führen Sie dann das Makro aus. Die zu teilende Spalte muss sich in Spalte A befinden und die beiden Spalten BC sind leer, sonst wird sie überschrieben (haha, die Zeit ist knapp, nicht). besonders intelligent) und die Anzahl der Zeilen 1000 Zeilen nicht überschreitet. Haha, sonst wird es etwas langsam, daher ist der Bereich auf 1000 Zeilen eingestellt. Beschäftigen Sie sich auch mit Stahlkonstruktionen? Haha, auch
Option explizit
Untertest()
Dim rng As Range
Dim arr As Variant
Dim k As Integer
Für jeden Ring in der Auswahl
rng.Value = Ersetzen(rng.Value, ":", "/")
arr = Split(rng.Value, "/")
k = UBound(arr) + 1
rng.Resize(1, k) = arr
Arr löschen
Nächstes Rng
Sub beenden Ich denke, Sie wissen, wie man den Code einfügt, deshalb werde ich nicht auf Details eingehen. Klicken Sie einfach auf das Bild unten, um den Code auszuführen, den ich für Sie geschrieben habe:
Schritt-1
Schritt-2
Schritt-3
Schritt-4
Klicken Sie auf [Entwicklungstools]-[Visual Basic] oder die Tastenkombination Alt+F11, um die VBE-Bearbeitungsoberfläche aufzurufen.
Wählen Sie, ob Sie ein neues Modul einfügen möchten
Fügen Sie den folgenden Code in das Modul ein:
Sub CFGZB()
Dim myRange As Variant
Dim myArray
Dim titleRange As Range
Titel als String dimmen
Dim ColumnNum As Integer
myRange = Application.InputBox(prompt:="Bitte wählen Sie die Titelzeile aus:", Typ:=8)
myArray = WorksheetFunction.Transpose(myRange)
Set titleRange = Application.InputBox(prompt:="Bitte wählen Sie den geteilten Header aus, der die erste Zeile und eine Zelle sein muss, z. B.: „Name", Typ:=8)
title = titleRange.Value
Das obige ist der detaillierte Inhalt vonMakro, das eine Excel-Tabelle in 300 Zeilen pro Blatt aufteilt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!