matester
Goto Top

Schnelle Unterstützung bei Excel-Makro

Hallo,
wie geht es euch? Kann mir jemand helfen?


1. Eine Tabelle A bis D und mehere Textzeilen 1 bis 20. Ich benötige ein Makro, was die Tabelle 1 in jeder Zeile nach einem Begriff "A" der in der Spalte D vorhanden ist,
durchsucht und wenn die letzte leere Zelle erreicht wurde nach einem 2. Begriff "B" und 3. Begriff "C" wieder Zeile für Zeile durchsucht. Dabei sollen alle "A" und
alle "B" aus Tabelle 1 (gesamte Zeile) in Tabelle 2 kopiert werden. Sortiert nach A und B. Alle Begriffe "C" in Tabelle 3 kopiert werden.


2. Die Tabelle 2 sollen dann nach bestimmten Begriffen "*Test1*" und "*Test2*" Zeile für Zeile durchsucht und gelöscht werden.


Ich hoffe, dass die Beschreibung einigermaßen verständlich geschrieben ist.


Vielen Dank im Voraus . . .


Hallo,
wie geht es euch? Kann mir jemand helfen?

Hier die Daten . . .

Tabelle1
A B C D
1 Büro 3631 fuermichseite
2 Aktuelles 2574 fuermichseite1
3 Bank 2366 fuermichseite
4 Haus 1795 fuermichseite1
5 Schrank 1156 fuermichseite1
6 Aktuelles 1140 fuermichseite
7 Test 677 fuermichseite2
8 Test 611 fuermichseite2
9 Test 594 fuermichseite3


Ergebnis Tabelle2
A B C
Büro 3631 fuermichseite
Bank 2366 fuermichseite
Aktuelles 1140 fuermichseite
Aktuelles 2574 fuermichseite1
Haus 1795 fuermichseite1
Schrank 1156 fuermichseite1

4232955ffc0d58e3e76c95086e162f70

Und hier die Beschreibung . . .

Suche aus der Tabelle1 alle Begriffe "*seite" und kopiere diese Zeilen ohne Spalte A in die 2. Tabelle.
Wenn alle Begriffe "seite" kopiert wurden dann suche nach dem Begriff "*seite1"
und kopiere diese auch in die 2. Tabelle in die erste freie Zeile nach dem Begriff "seite".


Vielen Dank für die Unterstützung!!!

Content-ID: 147480

Url: https://administrator.de/forum/schnelle-unterstuetzung-bei-excel-makro-147480.html

Ausgedruckt am: 25.12.2024 um 19:12 Uhr

77559
77559 22.07.2010 um 21:47:54 Uhr
Goto Top
Zitat von @matester:
Ich benötige schnelle Hilfe!!!
Ich auch.

Ich habe zwei Probleme:
Glaub ich nicht, werden mehr sein.

1. Eine Tabelle A bis D und mehere Textzeilen 1 bis 20. Ich benötige ein Makro, was die Tabelle 1 in jeder Zeile nach einem
Begriff "A" der in der Spalte D vorhanden ist,
durchsucht und wenn die letzte leere Zelle erreicht wurde nach einem 2. Begriff "B" und 3. Begriff "C"
wieder Zeile für Zeile durchsucht. Dabei sollen alle "A" und
alle "B" aus Tabelle 1 (gesamte Zeile) in Tabelle 2 kopiert werden. Sortiert nach A und B. Alle Begriffe
"C" in Tabelle 3 kopiert werden.

2. Die Tabelle 2 sollen dann nach bestimmten Begriffen "*Test1*" und "*Test2*" Zeile für Zeile durchsucht
und gelöscht werden.


Ich hoffe, dass die Beschreibung einigermaßen verständlich geschrieben ist.
Nö.

Vielleicht erläuterst du etwas den Kontext oder gibst mal ein konkretes Beispiel.

Gruß
LotPings
76109
76109 22.07.2010 um 23:31:30 Uhr
Goto Top
[OT]

Hallo LotPings!

In diesem Fall, bin ich voll Deiner Meinung und bei dem Wort "schnell" bekomme ich fast immer Magenschmerzen. Da ist mir Schreien doch lieber face-smile

Gruß Dieter

[/OT]
it-frosch
it-frosch 22.07.2010 um 23:47:21 Uhr
Goto Top
Hallo matester,

klingt wie eine Hausaufgabe die eigentlich du lösen solltest. face-wink

Grüße vom IT-Frosch


PS: Mach doch mal einen Anfang, dann helfen wir dir gern weiter.
Oder frei nach Garfield: Nur selber essen macht dick. face-wink
matester
matester 23.07.2010 um 16:53:14 Uhr
Goto Top
Hallo IT-Frosch,

wenn ich dazu selber in der Lage wäre, hätte ich bestimmt nicht nach Deiner Hilfe bzw. Unterstützung gerufen!!!
Biber
Biber 23.07.2010 um 17:09:53 Uhr
Goto Top
Ja nee, matester,


Zitat von @matester:
Hallo IT-Frosch,

wenn ich dazu selber in der Lage wäre, hätte ich bestimmt nicht nach Deiner Hilfe bzw. Unterstützung gerufen!!!
Nix vermischen jetzt.
Natürlich wissen hier alle it-frösche und sonstigen Tiernamen, dass du hier Hilfe suchst, weil du momentan allein da nicht weiterkommst.
Da sieht auch keiner ein Problem, denke ich. Das geht uns allen so auf manchen Gebieten. Und manchen auf allen Gebieten.

Du bist aber nicht damit ins Fettnäpfchen getreten, sondern mit der Eröffnung:
Ich benötige schnelle Hilfe!!!
Ich habe zwei Probleme:

An dieser Stelle haben die meisten andere Plaudereibeginner stehen
Hallo,
wie geht es euch? Kann mir jemand bei {whatever} helfen?.
ohne ähnliches.

Das zweite, was zu Recht auf Unverständnis stiess ist die "Beispielbeschreibung".

Ja hey! - die meisten von uns arbeiten mehr als 10 Minuten täglich mit und in konkreten Unternehmensprozessen.
Auch mit Excel.
Da komm doch nicht mit "Ich benötige ein Makro, was die Tabelle 1 in jeder Zeile nach einem Begriff "A" der in der Spalte D vorhanden ist,
durchsucht und wenn die letzte leere Zelle erreicht wurde nach einem 2. Begriff "B" und 3. Begriff "C"wieder Zeile für Zeile durchsucht. Dabei sollen alle "A" ...


Sag doch, am besten mit 5 Zeilen aus der Excel-Tabelle "Standzeiten" oder wie immer "Tabelle 1" nun heißen mag,
  • was sind die Daten, mit denen ich loslaufe
  • was ist die Verarbeitungsregel
  • wie soll das Ergebnis aussehen.

Ist doch nicht gegen dich gerichtet - aber wir brauchen doch sonst mehr Zeit zum Immer-wieder-nachfragen als zum Lösen.

Grüße
Biber
matester
matester 23.07.2010 um 18:12:21 Uhr
Goto Top
Hallo,
wie geht es euch? Kann mir jemand helfen?

Hier die Daten . . .

Tabelle1
A B C D
1 Büro 3631 fuermichseite
2 Aktuelles 2574 fuermichseite1
3 Bank 2366 fuermichseite
4 Haus 1795 fuermichseite1
5 Schrank 1156 fuermichseite1
6 Aktuelles 1140 fuermichseite
7 Test 677 fuermichseite2
8 Test 611 fuermichseite2
9 Test 594 fuermichseite3


Ergebnis Tabelle2
A B C
Büro 3631 fuermichseite
Bank 2366 fuermichseite
Aktuelles 1140 fuermichseite
Aktuelles 2574 fuermichseite1
Haus 1795 fuermichseite1
Schrank 1156 fuermichseite1

4232955ffc0d58e3e76c95086e162f70


Und hier die Beschreibung . . .

Suche aus der Tabelle1 alle Begriffe "*seite" und kopiere diese Zeilen ohne Spalte A in die 2. Tabelle.
Wenn alle Begriffe "seite" kopiert wurden dann suche nach dem Begriff "*seite1"
und kopiere diese auch in die 2. Tabelle in die erste freie Zeile nach dem Begriff "seite".


Vielen Dank für die Unterstützung!!!
matester
matester 24.07.2010 um 21:10:46 Uhr
Goto Top
Hallo LotPings,

hier die Daten . . .

Tabelle1
A B C D
1 Büro 3631 fuermichseite
2 Aktuelles 2574 fuermichseite1
3 Bank 2366 fuermichseite
4 Haus 1795 fuermichseite1
5 Schrank 1156 fuermichseite1
6 Aktuelles 1140 fuermichseite
7 Test 677 fuermichseite2
8 Test 611 fuermichseite2
9 Test 594 fuermichseite3


Ergebnis Tabelle2
A B C
Büro 3631 fuermichseite
Bank 2366 fuermichseite
Aktuelles 1140 fuermichseite
Aktuelles 2574 fuermichseite1
Haus 1795 fuermichseite1
Schrank 1156 fuermichseite1

4232955ffc0d58e3e76c95086e162f70


Und hier die Beschreibung . . .

Suche aus der Tabelle1 alle Begriffe "*seite" und kopiere diese Zeilen ohne Spalte A in die 2. Tabelle.
Wenn alle Begriffe "seite" kopiert wurden dann suche nach dem Begriff "*seite1"
und kopiere diese auch in die 2. Tabelle in die erste freie Zeile nach dem Begriff "seite".


Vielen Dank für die Unterstützung!!!
76109
76109 26.07.2010 um 09:23:04 Uhr
Goto Top
Hallo matester!

Wäre noch die Frage zu klären, wie die Suchbegriffe gehandhabt werden sollen. Per InputBox abfragen (z.B. durch Komma getrennt)? oder als konstante Werte? oder alle Begriffe mit Seite (nach Seite sortiert)...?

Gruß Dieter
matester
matester 26.07.2010 um 18:30:30 Uhr
Goto Top
Guten Tag Dieter,

die Suchbegriffe als konstante Werte!!!

Vielen Dank
77559
77559 26.07.2010 um 18:39:19 Uhr
Goto Top
Hallo Matester,

hört sich für mich nicht unbedingt nach Makro sondern nach SVerweis an.

Gruß
LotPings
matester
matester 26.07.2010 um 19:48:35 Uhr
Goto Top
Hallo LotPings,

es würde auch reichen, wenn die gefundenen Daten "AQ", "TE" und"GR" anstelle der 1. Tabelle lezte Zeile in die 2. Tabelle nacheinander kopiert werden (siehe Makro).

Sub Kopieren()
Dim lngRow As Long

For lngRow = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
If UCase(Cells(lngRow, 3)) = UCase("AQ") Or _
UCase(Cells(lngRow, 3)) = UCase("TE") Or _
UCase(Cells(lngRow, 3)) = UCase("GT") Then _
Rows(lngRow).Copy Cells(Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row, 1)
Next
End Sub


Oder bei dem Makro 2 nicht die gesamte Zeile sondern nur die Zellen (A bis D) in denen der Suchbegriff (z.B. "AQ") steht, gelöscht werden. Weil Bedingungen gesetzt sind.


Sub Testlöschen()
Dim var As Variant
Do While Not IsError(var)
var = Application.Match("*AQ", Columns(1), 0)
If Not IsError(var) Then Cells(var, 1).Delete xlShiftUp
Loop
Do While Not IsError(var)
var = Application.Match("*TE", Columns(1), 0)
If Not IsError(var) Then Cells(var, 1).Delete xlShiftUp
Loop
End Sub


Vielen Dank für die Unterstützung!!!
76109
76109 27.07.2010 um 00:14:16 Uhr
Goto Top
Hallo matester!

Mhm, interessanter Codeface-wink

Und hier meine Interpretation zum vorigen Beispiel Tabelle1 Spalte B:D, mit Suchbegriffe in Spalte D, kopieren nach Tabelle2 Spalte A:C und sortieren nach Spalte C-A-B:
Option Explicit
Option Compare Text

Const Sheet1 = "Tabelle1"   'Tabellenname Tabelle 1  
Const Sheet2 = "Tabelle2"   'Tabellenname Tabelle 2  

Const TitelZeile = 2        'Überschriftzeile  
Const StartZeile = 3        'Daten ab Zeile ?  

Sub KopierenUndSortieren()
    Dim Suchbegriffe, Wks1 As Worksheet, Wks2 As Worksheet, c As Range, AktuelleZeile As Long, i As Integer
    
    Suchbegriffe = Array("AQ", "TE", "GR")  
    
    Set Wks1 = Sheets(Sheet1):  Set Wks2 = Sheets(Sheet2)
    
    AktuelleZeile = StartZeile
    
    Wks2.Cells.Clear
       
    With Wks1
        For Each c In .Range("D:D")  
            For i = 0 To UBound(Suchbegriffe)
                If c Like Suchbegriffe(i) Then
                    Range(.Cells(c.Row, "B"), .Cells(c.Row, "D")).Copy Wks2.Cells(AktuelleZeile, "A")  
                    AktuelleZeile = AktuelleZeile + 1:  Exit For
                End If
            Next
        Next
    End With
    
    With Wks2
       .Cells(StartZeile, "A").CurrentRegion.Sort _  
            Key1:=.Cells(StartZeile, "C"), Key2:=.Cells(StartZeile, "A"), Key3:=.Cells(StartZeile, "B")  
        Range(Wks1.Cells(TitelZeile, "B"), Wks1.Cells(TitelZeile, "D")).Copy .Cells(TitelZeile, "A")  
    End With
End Sub

Sub SuchenUndLoeschen()
    Dim Suchbegriffe, EndLine As Long, i As Long, a As Integer
    
    Suchbegriffe = Array("AQ", "TE")  
    
    With Sheets(Sheet2)
        EndLine = .Cells(.Rows.Count, "C").End(xlUp).Row  
        
        For i = StartZeile To EndLine
            If i > EndLine Then Exit For
            For a = 0 To UBound(Suchbegriffe)
                If .Cells(i, "C") Like Suchbegriffe(a) Then  
                   .Rows(i).Delete:  i = i - 1:  EndLine = EndLine - 1:  Exit For
                End If
            Next
        Next
    End With
End Sub

Gruß Dieter
matester
matester 27.07.2010 um 19:16:47 Uhr
Goto Top
Hallo Dieter,

ich habe selten so eine gute Interpretation gesehen!!!

Das ist genau, was ich gesucht habe. Das sind 100 Punkte für Dich!!!


Vielen Dank für Deine Unterstützung!!!
76109
76109 27.07.2010 um 21:29:36 Uhr
Goto Top
Hallo matester!

Zitat von @matester:
ich habe selten so eine gute Interpretation gesehen!!!
Danke für die Blumenface-smile
Das ist genau, was ich gesucht habe. Das sind 100 Punkte für Dich!!!
Und wo kriege ich jetzt die Waschmaschine face-smile

Vielen Dank für Deine Unterstützung!!!
Gern geschehenface-wink

Gruß Dieter