Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Per Makro und Suchbefehl bestimmte Zellen in Nachbarspalte verschieben
#1
Liebe Excel-Experten,
ich habe bei euch schon einmal eine tolle Unterstützung bekommen und versuche es noch einmal mit einem anderen Problem:
Ich komme leider mit meinem Makro nicht voran. Ich habe eine Liste mit drei Spalten:

A|B|C
1|--|d
2|--|d
3|e|t
4|--|d

"--" heißt: leere Zelle

Ich möchte per Makro automatisieren, dass der Inhalt "d" in allen drei Zeilen nach links in die leere Spalte verschoben wird. Dazu sind folgende Schritte notwendig:
1. Tabelle wird nach Spalte C sortiert.
2. Suche in Spalte C nach "d" und markiere alle Zellen, in denen "d" vorkommt. (Dies ist ja durch das "Suchen"-Fenster möglich.)
3. Verschiebe die markierten Zellen von Spalte C nach Spalte B.

Diese Schritte sind "zu Fuß" genau so möglich und führen zum gewünschten Ergebnis. Wenn ich diese Schritte aber in einem Makro aufzeichne, scheint dieses meine Suche komplett zu ignorieren. Statt dessen markiert Excel immer die komplette Spalte C und verschiebt sie nach B. Dies hat zur Folge, dass auch in Zeile 3 "e" durch "t" ersetzt wird. Ich will aber nur den Inhalt "d" jeweils in die leere Spalte B verschieben.

Habt ihr eine Idee?

Vielen Dank!!
Jan
Antworten Top
#2
Hallo Jan,

da Du Dein Makro hier nicht zeigst, mal einen anderen Makro-Weg:
Lege eine Schleife über Deine Zeilen und frage darin ab, ob Spalte B leer ist und in Spalte C ein "d" steht, dann schiebe den Wert von C nach B, ansonsten lass alles so wie es ist.
[Bild: attachment-190.gif]
Gruß Günter
aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
Antworten Top
#3
Hallo Glausius,
das Makro habe ich deswegen nicht gepostet, weil letztlich nichts drinsteht. Scheinbar kann man Suchen nicht ins Makros einbauen. Das ist ja genau mein Problem.
Leider verstehe ich nicht, was du mit "Schleife über Zeilen legen" und "den Wert von C nach B schieben" meinst. So fit bin ich in Excel nicht. Kannst du das etwas genauer sagen?
Vielen Dank!
Jan
Antworten Top
#4
Code:
Sub Werte_tauschen()
Dim i As Integer

For i = 1 to 4         'hier Zeile 1 bis 4
    If Cells(i, 2) = "" AND Cells(i, 3) = "d" then
         Cells(i, 2) = Cells(i, 3)
         Cells(i, 3) = ""
    End If
Next

End Sub

Das Ganze in ein Modul und Du kannst das Makro ausfrufen, wobei ich das jetzt fest auf Deine 4 Teilen eingestellt habe. Man kann das natürlich auch variable gestalten oder die Zeilenanzahl fest vorgeben.
[Bild: attachment-190.gif]
Gruß Günter
aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
[-] Folgende(r) 1 Nutzer sagt Danke an Glausius für diesen Beitrag:
  • Jan234
Antworten Top
#5
Hallo Jan,

versuche es mal damit. Sortieren brauchst du dafür nicht:

Code:
Option Explicit

Sub verschieben()
    Dim lngZeile As Long
    For lngZeile = 2 To Range("A1").End(xlDown).Row
        If Cells(lngZeile, 3) = "d" Then
            Cells(lngZeile, 2) = "d"
            Cells(lngZeile, 3) = ""
        End If
    Next lngZeile
   
End Sub
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
[-] Folgende(r) 1 Nutzer sagt Danke an Klaus-Dieter für diesen Beitrag:
  • Jan234
Antworten Top
#6
Wow, Klasse!
Vielen Dank!
Das erspart mir eine Menge Rumklickerei!!!
Euch noch eine gute Zeit und alles Gute!
Jan
Antworten Top
#7
Hallo Klaus-Dieter,
weil das so super geklappt hat, vielleicht kriegst du das auch noch hin? Das hier wäre noch das Sahnehäubchen auf mein Makro:

Ausgangssituation:

A|B|C
--|e|d
z|--|d

"--" heißt: leere Zelle

Ziel:

A|B|C
d1|e|--
z|d2|--

oder auch:

A|B|C

d|e|--

z|d|--


Damit meine ich:
Wenn in der Zeile die Spalte A leer ist, dann wird "d" in Spalte A verschoben (oder kopiert) und in "d1" umbenannt. (Wenn das mit dem Umbenennen zu kompliziert ist, kann das aber auch in einem späteren Schritt erfolgen.)
Wenn in der Zeile die Spalte B leer ist, dann wird "d" in Spalte B verschoben (oder kopiert) und in "d2" umbenannt. (Wenn das mit dem Umbenennen zu kompliziert ist, kann das aber auch in einem späteren Schritt erfolgen.)

Weil Zeile C dann sowieso gelöscht wird, ist es egal, ob verschoben oder kopiert wird.

Vielen Dank!!
Gruß
Jan
Antworten Top
#8
Jallo Jan,

so:

Code:
Option Explicit

Sub verschieben()
    Dim lngZeile As Long
    Dim intMark As Integer
    For lngZeile = 2 To Range("A1").End(xlDown).Row
        If Cells(lngZeile, 1) = "" Then intMark = 1
        If Cells(lngZeile, 2) = "" Then intMark = 2
        If Cells(lngZeile, 3) = "d" Then
            Cells(lngZeile, intMark) = "d" & intMark
            Cells(lngZeile, 3) = ""
        End If
    Next lngZeile
End Sub
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
[-] Folgende(r) 1 Nutzer sagt Danke an Klaus-Dieter für diesen Beitrag:
  • Jan234
Antworten Top
#9
Hallo Klaus-Dieter,
das ist einfach fantastisch und erspart mir sehr viel Arbeit. Ganz herzlichen Dank! Ich habe noch eine offene Frage, aber da komme ich vielleicht nächste Woche nochmal auf dich zurück.
Grüße!
Jan
Antworten Top
#10
Hallo Klaus-Dieter,
ich habe doch noch einmal eine Bitte, aber ich bin mir nicht sicher, ob das machbar ist...

Ausgangssituation: Zeile 1 ist unterschiedlich eingefärbt, mal rot, mal gelb. Sie hat manchmal einen Inhalt mit einer Ziffer, manchmal nicht. C1 und D1 haben keinen Inhalt, sind aber eingefärbt.

  |A         |B        |C         |D      |E
1| 7 (rot) |1 (rot) | (gelb) | (rot) |

Folgendes soll nun mit Zelle E1 passieren:
1. Es wird abgefragt, welche Farbe die mit Ziffern befüllten Zellen haben. Dies ist immer eindeutig, d.h. die mit Ziffern befüllten Zellen haben immer die gleiche Farbe, hier: rot.
2. Zelle E1 wird deshalb rot eingefärbt.
3. Diese Operation gilt für den Bereich E1 bis E100, allerdings nur für sichtbare (eingeblendete) Zeilen.

Ist sowas möglich? Wäre toll!!!

Danke und Gruß
Jan
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste