Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1944to1948
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bereich verschieben, VBA

Bereich verschieben, VBA
03.09.2023 14:40:38
Christian
Hallo,

ich wollte mal fragen, ob ihr mir hierbei helfen könnt.

Ich suche ein Möglichkeit in allen Spalten, in denen in Zeile 283 das Wort tracking steht, den Bereich 93:283 um eine Zelle nach oben zu verschieben. Dass dabei der Inhalt von Zeile 92 überschrieben wird ist mir bewusst, aber auch so gewünscht.
Spalten, in denen in Zeile 283 nicht das Wort tracking steht sollen unverändert bleiben.

Ich weiß das kann man auch von Hand machen, aber es sind soo viele, ich hoffe das geht auch einfacher als jede Spalte von hand prüfen, den Bereich ausschneiden und nach oben einfügen.

Ist das irgendwie umsetzbar?
Vielen Dank
Christian

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Bspdatei
03.09.2023 15:18:40
Christian
https://www.herber.de/bbs/user/162662.xlsx

fast alle Spalten sind so aufgebaut wie die Spalten A bis D.

Es gibt jedoch auch Spalten wie Spalte E in die sich in Zeile 92 ein nicht benöigter Text eingschlichen hat und die weiteren benötigten Texte um eine Zelle nach unten verschoben hat.

Es geht mir um eine Möglichkeit, das wieder gerade zu rücken.

Gruß und vielen Dank
Christian
AW: Bspdatei
03.09.2023 15:34:45
Rolf
Hallo Christian,

teste mal diesen Code (gehört in ein allgemeines Modul):

Sub Tracking()
Dim i As Long
Dim iCol As Long

iCol = Cells(283, Columns.Count).End(xlToLeft).Column 'letzte befüllte Spalte in Zeile 283
For i = 1 To iCol
If Cells(283, i) = "tracking" Then 'wenn gefunden, dann
Range(Cells(93, i), Cells(283, i)).Cut Range(Cells(92, i), Cells(282, i)) 'Bereich verschieben
End If
Next
End Sub

Gruß Rolf
Anzeige
AW: Bspdatei
03.09.2023 15:46:07
Christian
Hallo Rolf,

erstmal vielen Dank. Es funktioniert. Aber wenn ich eine Verständnisfrage stellen darf, woher weiß dieses Makro, welches der 7 Blätter meiner Mappe es nehmen soll?
Oder hat es nur deshalb geklappt, weil das betroffene Blatt in dem Moment aktiv war?

Hab sicherheitshalber für den Fall das ich recht mit der Annahme habe noch ein With Worksheets("Tabelle1") reingepackt. Funktioniert hat es aber auch ohne.

Danke für die Erklärung
Christian
AW: Makro bezieht sich auf aktives Blatt
03.09.2023 15:54:13
Rolf
....Du hattest auch nix von mehreren Blättern geschrieben.
Das With-Konstrukt ist auf jeden Fall sinnvol, aber Du weißt ja, dass Du dann alle Cells im Code
mit einem Punkt davor referenzieren mußt?!

Gruß Rolf
Anzeige
AW: Makro bezieht sich auf aktives Blatt
03.09.2023 16:02:26
Christian
Hallo Rolf,

danke für den Hinweis, hab ich sofort geändert.

Was soll ich sagen, du hast recht davon habe ich nichts erwähnt. Ich muss allerdings auch zu meiner Verteidigung sagen, ich konnte die komplette Datei nicht hochladen, weil zu groß. Also musste ich es auf das beschränken, was ich als Laie für relevant gehalten habe um das Problem zu lösen und die Anzahl der Blätter hatte da nicht dazugehört.

Da gab es halt einen Unterschied zwischen dem was ein Laie für relevant hält und dem was für einen Profi dann wirklich relevant ist. Hätte ich einfach die komplette Datei hochladen können wäre mir viel Arbeit erspart geblieben eine gesonderte Bsp Datei zu erstellen, du hättest alle Infos gehabt und dieses Misverständnis hätte es nicht gegeben.

Aber sorry das war keine böse Absicht von mir.

Gruß
Christian
Anzeige
AW: alles gut, war auch kein Vorwurf! owT
03.09.2023 16:07:30
Rolf
dann bin ich ja beruhigt owT
03.09.2023 16:17:42
Christian
.
ohne Hächen für Frage noch offen owT
03.09.2023 16:18:12
Christian
.
AW: Bspdatei
03.09.2023 15:51:54
GerdL
Hallo Christian!

282 ist nicht 283. Also unten Code für Zeile 283.
Den Code kannst du dir für "textzuviel" in Zeile 92 anpassen, dort nur Delete ohne Offset.
Die Reihenfolge musst du selbst bestimmen.

Sub Unit283()


Const strWort As String = "tracking"
Const lngZeile As Long = 283
Const lngLoeschZeile As Long = 92

Dim Such As Range, Loesch As Range

Set Such = ActiveSheet.Rows(lngZeile).Find(strWort, LookIn:=xlValues, lookat:=xlWhole, MatchCase:=False)
If Not Such Is Nothing Then
strErste = Such.Address
Do
If Loesch Is Nothing Then
Set Loesch = Such
Else
Set Loesch = Union(Loesch, Such)
End If
Set Such = ActiveSheet.Rows(lngZeile).FindNext(Such)
Loop Until Such.Address = strErste
End If
If Not Loesch Is Nothing Then
Loesch.ClearContents
Loesch.Offset(lngZeile - lngLoeschZeile).Delete shift:=xlUp
Set Such = Nothing
End If

End Sub


Gruß Gerd
Anzeige
AW: Bspdatei
03.09.2023 17:04:27
Christian
Hallo Gerd,

zuerst auch dir vielen Dank.

So sieht meine Bsp Datei aus, nachdem ich dein Makro ausgeführt habe.
Spalte E hätte nach dem Ausführen so aussehen sollen wie die ersten 4 Spalten. Irgendwas lief da anscheinend schief.

Christian

https://www.herber.de/bbs/user/162664.xlsm
AW: Bspdatei
03.09.2023 18:27:14
Herbert Grom
Hallo Christian,

man kann natürlich "textzuviel" gegen "Text92" austauschen, doch einfacher währe es, zu wissen, was Anstatt "Text..." drin stehen sollte. Oder sollte immer nur die Zahl gegen die nächsthöhere ersetzt und an den vorh. Text angefügt werden?

Servus
Anzeige
Bspdatei
03.09.2023 19:48:57
Christian
Hallo Herbert,

erstmal danke dass du dich um mein Anliegen kümmerst.
Die Beispieldatei ist zugegebenermaßen stark vereinfacht.

Die Realität sieht so aus, dass in der Standardspalte so wie sie im Endeffekt aussehen soll in jeder Spalte die Texte 1 bis 75 identisch sind, sowie auch die Texte 212 bis 282.
Die Texte 76 bis 211 unterscheiden sich in jeder Spalte.

In den Spalten, in denen sich was ändern soll, hat sich in Zeile 92 ein zusätzlicher Text eingeschlichen, wodurch die Texte 93 bis 282 um eine Zelle nach unten gerutscht sind.
(falls das was hilft, diese zusätzlichen Texte sind nicht identisch, beginnen aber alle mit MRS)

Das Ziel des Ganzen ist es, im Endeffekt, diese Texte die nach unten geschoben sind wieder nach oben zu rücken, um die Zeilen 1 bis 75 und 212 bis 282 löschen zu können ohne dass wichtige Daten verloren gehen um dann im nächsten Schritt das ganze mit PQ aufzubereiten wie ich es brauche... (keine Angst die PQ Abfragen habe ich schon und sie funktionieren auch) aber das ist so das was dahintersteckt

Gruß
Christian

PS: Wenn du dich jetzt fragst, warum diese Unterschiede in den Texten jetzt erst erwähnt werden. Ich bin davon ausgegangen, dass mein Lösungsansatz ausreicht ihn umzusetzen und er reicht ja auch aus. Diese Info hätte in meinen Augen zu dem Zeitpunkt als ich die Frage gestellt habe Verwirrung gestiftet
Anzeige
Nachtrag
03.09.2023 19:53:04
Christian
ich meinte von Spalte zu spalte identisch nicht von Zeile zu zeile. Innerhalb einer Spalte kommt kein einziger Text mehrfach vor.
jetzt sehe ich erst was du meinst
03.09.2023 19:59:05
Christian
nach Text zuviel müsste es mit Text92 bis 281 weitergehen, nicht mit 93 bis 282. Das ist ein Fehler in der Datei, da muss ich mich entschuldigen.
AW: jetzt sehe ich erst was du meinst
04.09.2023 09:12:03
Herbert Grom
Kannst du denn nicht ein paar Originalzellinhalte posten, denn im Original wird ja sicher nicht "Textxxx" stehen. Noch eine Frage: Soll immer die Zahl der Spalte links der Korrekturzelle genommen werden?
jetzt sehe ich erst was du meinst
04.09.2023 19:27:44
Christian
Hallo Herbert,

ich kann es einfach ganz kurz fassen, ich glaube du willst es viel zu kopliziert machen, prüfen ob in Zeile 283 das Wort tracking steht und wenn ja in jeder betroffenen Spalte den Bereich 93:283 um eine Zelle nach oben verschieben, wenn nein die betroffenen Spalten unverändert lassen. Ich bin mir zu 100% sicher, dass das alle meine Wünsche erfüllt.

Gruß
Christian
Anzeige
AW: jetzt sehe ich erst was du meinst
05.09.2023 10:10:06
Herbert Grom
Hallo Christian,

wenn man in Spalte E alle Zellen um 1 nach oben holt, dann ist zwar der falsche Eintrag weg und die Gesamtzahl der Einträge stimmt, aber die Zahlen darin stimmen dann nicht mehr (s. Bild).

Userbild

Servus
jetzt sehe ich erst was du meinst
05.09.2023 10:23:14
Christian
Hallo Herbert,

wie gesagt das ist ein Fehler in der Bsp Datei, im Original passt alles auf diesem Weg.

Gruß
Christian
AW: jetzt sehe ich erst was du meinst
05.09.2023 10:24:55
Herbert Grom
Auf welchem Weg meinst du denn?
jetzt sehe ich erst was du meinst
05.09.2023 10:32:37
Christian
den Bereich um eine Zelle nach oben schieben, wenn in Zeile 283 das Wort Tracking steht. Der Fehler in der Bsp Datei ist der dass nach Textzuviel Text92, 93 ff. stehen sollte, nicht 93, 94 ff.

Aber nimm es mir bitte nicht übel wenn ich das jetzt so deutlich sage. Es ging mir von vorneherein daum Fehler auszumerzen, die mit Rolfs Makro längst ausgemerzt sind.Ich habe jetzt aus Höflichkeit, dass du dir die Mühe nicht umsonst machst deinen Beitrag weiter verfolgt, wohl wissend aber dass ich künstlich eine Datei erstellen muss, die die alten Fehler enthält um dein Makro zu testen, da die Originaldatei längst keine Fehler mehr enthält. Kurz gesagt, du versuchst hier mit mir zusammen ein Makro zu erstellen, welches ich seit Rolfs Beitrag eigentlich gar nicht mehr benötige.

Gruß und trotzdem Danke
Christian
Anzeige
AW: jetzt sehe ich erst was du meinst
05.09.2023 10:34:04
Herbert Grom
Hallo Christian,

kein Problem, Hauptsache dir ist geholfen.

Servus

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige