Hallo Leute,
ich habe eine Problem:und zwar hab ich eine grosse tabelle welche immer in Zeile 5 beginnt.Die Überschriften stehen jedoch nicht immer an derselben stelle.Ich möchte aus der Spalte:Bennenung und der Spalte:Teilenummer jeweils immer die entsprechende Bennenung oder Teilenummer immer mit einer spalte abstand direkt neben die tabelle schreiben.
Also ich möchte das Makro gerne auf verschiedene Stücklisten anwenden,bei welchen die spalten jedoch nicht immer gleich angeordnet sind.
zunächst: brrrr - ich schüttle mich. Welche Tabelle? Excel? Wenn ja, welche Version. Wenn Excel, warum dann als Datenbank vergewaltigen? Was soll das Makro genau machen? Die Spalten mit dem jeweiligen Titel umkopieren?
Letzteres nehme ich mal als gegeben an und komme dann zu folgendem Ansatz:
Schleife über A - ZZ der Zeile 6
Jeweilige Zelle (A6, B6 …) abfragen ob „Benennung“ oder „Teilenummer“ (was machst Du bei Schreibfehlern?) vorhanden ist, wenn ja: spalte merken
Ende der schleife
wenn spalteBenennung > 0 dann
Kopiere spalteBenennung nach SpalteX
wenn spalteTeilenummer > 0 dann
Kopiere spalteTeilenummer nach SpalteY
Interessant wäre dann noch die Länge der jeweiligen Spalte (sind Leerwerte enthalten?)
Alternativ kann man den befüllten Bereichen auch Namen zuweisen.
Bessere Alternative ist es, dies gleich mit einer Datenbank zu realisieren.
Vorschlag: Denke über meine o. g. Fragen nach, beschreibe das Problem und die Wunschvorstellung etwas detaillierter, dann werde ich auch besser helfen können.
ich habe leider nicht viel Zeit, aber ich hoffe dir ein paar Hinweise geben zu können.
Mit dem Befehl
Range(„A1“).Select
selektierst du die Zelle A1. Ist sinnvoll für die Initialisierung. Mit
ActiveCell.Offset(r, s).Range(„A1“).FormulaR1C1
kannst du dann auf beliebige Zellen sowohl lesend als auch schreibend zugreifen. Du gehst dabei r Reihen nach unten und s Spalten nach rechts. Mit negativen Werten entsprechend nach oben bzw. links.
Mit Schleifen kannst du dann beliebige Bereiche systematisch durchgehen und entsprechend die Werte zusammenkopieren.
Hallo Effe,
was heißt „nicht immer an derselben Stelle“? Heißt das in untersch. Spalten? Also: in der einen Tabelle stehen die beiden Spalten in Sp. A und Sp. B und in einer anderen z.B. in Sp. C und D?
Das müsste ich schon wissen. Ich bin heute nachmittag wieder da. Da könnte ich mich damit beschäftigen, wenn du mir noch ein paar Infos dazu schickst.
Hallo effe,
tut mir leid, aber ich kann dir nicht ganz folgen.
kannst du mir eine Beispieldatei schicken, aus der ich den aufbau deiner Tabelle und was von wo nach wo kopiert werden soll.
Anfangszustan->Endzustand.
sorry, komme erst jetzt dazu, mir das mal anzusehen.
Hoffe, dass ich es richtig verstanden hab:
die Stücklisten fangen immer bei A5 an und sind immer eine zusammenhängende Tabelle - nur die Spalten sind unterscheidlich angeordnet, wobei die beiden gesuchetn immer vorhanden sind (halt nur an unterscheidlicher Stelle).
Könnte man wie folgt lösen:
Sub Stückliste()
Range(„A5“).Select
y = Selection.CurrentRegion.Rows.Count
x = Selection.CurrentRegion.Columns.Count
s1 = Null
s2 = Null
For i = 1 To x ’ suchen der Spalten in den Überschriften
If ActiveCell.Offset(0, i - 1).Value = „Benennung“ Then s1 = i
If ActiveCell.Offset(0, i - 1).Value = „Teilenummer“ Then s2 = i
Next i
If s1 = Null Or s2 = Null Then
MsgBox "Kann Spalte(n) nicht ermitteln "
Exit Sub
End If
Range(Cells(5, s1), Cells(5 + y - 1, s1)).Copy
Cells(5, x + 2).Select
Selection.PasteSpecial Paste:=xlValues ’ copy Spalte Benennung
Range(Cells(5, s2), Cells(5 + y - 1, s2)).Copy
Cells(5, x + 3).Select
Selection.PasteSpecial Paste:=xlValues ’ copy Spalte Teilenummer
Range(Cells(5, x + 2), Cells(5 + y - 1, x + 3)).Select ’ kopierte Daten markieren
Application.CutCopyMode = False
Cells.EntireColumn.AutoFit
End Sub
Habe das Makro und eine Beispieldatei hochgeladen: