Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1932to1936
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

Suchen / kopieren von mehreren Blättern

Suchen / kopieren von mehreren Blättern
16.06.2023 11:07:09
Peter

Hallo zusammen.

Ich habe mehrere Arbeitsblätter ( zwischen 1 und 10 Stück, Namen: Table 1-10, Bereich bis max. DZ 1000 ) und brauche eine Funktion, die all diese Blätter nach einem bestimmten Wort (bali:) durchsucht (steht immer am Anfang der betreffenden Zellen) und alle die entsprechenden Zelleninhalte und die Zelleninhalte jeweils rechts von ihr in eine neue, zweispaltige Tabelle auf dem "Arbeitsbereich", also Tabelle 1, untereinander zusammensammelt.

Danach müssen noch alle doppelt vorkommenden Einträge entfernt werden.

Ich habe schon wie wild gegoogelt und mit sverweis, suchen etc probiert, aber das übersteigt meine Fähigkeiten leider.

Hoffentlich kann mir hier jemand helfen.

Beste Grüße

Peter

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suchen / kopieren von mehreren Blättern
16.06.2023 12:43:30
Daniel
HI
geht am einfachsten so:
1. alles untereinander kopieren.
2. die Zeilen, die nicht mit "bali:" beginnen, löschen
3. die doppelten Zeilen löschen.

also im Prinzip:
for i = 1 to 10
       With Sheets("Table " & i)
          intersect(.Usedrange, .Range("DZ:EA")).Copy
          Sheets("Arbeitsbereich").Cells(Rows.Count, 1).End(xlup).Offset(1, 0).PasteSpecial xlpasteall
      end with
next

With Sheets("Arbeitsbereich").UsedRange
    With .Columns(3)
        .FormulaR1c1 = "=IF(LEFT(RC1,5)="bali:",Row(),0)"
       .EntireRow.RemoveDuplicates 3, xlno
       .ClearContents
    end with
    .RemoveDuplicates array(1, 2), xlno
end with
    
Gruß Daniel


Anzeige
AW: Suchen / kopieren von mehreren Blättern
16.06.2023 12:53:56
Peter
Danke für die schnelle Antwort, Daniel.

Leider fangen nicht die gesuchten Zeilen mit BALI an, sondern nur die gesuchten Zellen. Diese sind aber überall über das Blatt verstreut.
Es soll diese und die eine Zelle rechts daneben kopiert werden, alles andere ist egal.

Untereinanderkopieren der Blätter ist leider auch nicht möglich, es sind 1-10 Arbeitsblätter und sollen es auch bleiben.

Ich hoffe, das verdeutlicht mein Problem

Besten Dank

Peter


AW: Suchen / kopieren von mehreren Blättern
16.06.2023 13:13:05
MCO
Hallo Daniel!

Ich hab´s nicht getestet, aber vom Prinzip müsste das klappen...

Sub Suche_nach_Bali()

    Dim rng As Range

    For i = 1 To 10
        With Sheets("Table " & i)
            Set rng = Intersect(.UsedRange, .Range("DZ:EA")) 'beschränkt den Bereich
            For Each cl In rng.SpecialCells(xlConstants) 'geht jede gefüllte Zelle durch
                'Suchbegriff wird abgefragt : "Bali:"
                If InStr(cl, "Bali:") > 0 Then .Range(cl, cl.Offset(0, 1)).Copy Sheets("Arbeitsbereich").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
            Next cl
        End With
    Next i
      
    Sheets("Arbeitsbereich").UsedRange.RemoveDuplicates Array(1, 2), xlNo
End Sub
Gruß, MCO


Anzeige
AW: Suchen / kopieren von mehreren Blättern
16.06.2023 15:15:54
snb
Man fragt sich: woher stammen diese Daten ?

Warum sollten nicht erst alle Blätter integriert werden können ?


AW: Suchen / kopieren von mehreren Blättern
16.06.2023 15:27:54
snb
Sub M_snb()
   For Each it In Sheets
     it.Cells.Replace "albi", "=1/0"
     For Each it1 In it.Cells.SpecialCells(-4123, 16)
       c01 = it1.Offset(, 1)
       If InStr(" " & c00 & " ", " " & c01 & " ") Then c00 = c00 & " " & c01
     Next
     it.Cells.SpecialCells(-4123, 16) = "albi"
   Next
   
   MsgBox c00
End Sub


AW: Suchen / kopieren von mehreren Blättern
19.06.2023 08:52:49
Peter
Danke für die Antworten.

Leider führt noch keine zum Ziel.
Ich bekomme immer einen Fehler 400.
Ich habe mal eine Testmappe gebastelt.

https://www.herber.de/bbs/user/159625.xlsm

Ich hoffe, das die hilft.

Besten Dank

Peter


Anzeige
AW: Suchen / kopieren von mehreren Blättern
19.06.2023 17:45:44
Piet
Hallo

ich bin mal einen anderen, altmodischen Weg gegangen, aber damit funktioniert es bei mir einwandfrei.
Ich habe aber Zelle D3 als Eingabe für den Suchtext benutzt, damit man auch andere Texte suchen kann!
Ausserdem wird in Spalte C mit angezeigt in welcher Tabelle der Wert BALI gefunden wurde.
https://www.herber.de/bbs/user/159635.xls - alte Excel 2003 Datei!!

Das Programm von snb ist sicher moderner und besser, aber in der Aufgabenstellung ist eine Unstimmigkeit!
Laut Zelle D3 soll der Suchtext auch den Wert 1/0 mit beinhalten. Dann findet man aber KEIN Ergebnis!!

mfg Piet


Anzeige
AW: Suchen / kopieren von mehreren Blättern
19.06.2023 18:03:19
Piet
Nachtrag

man kann zuerst auch alle BALI Texte auflisten, und dann nach dem ansehen die doppelten löschen.
In Table1 kam Bali mit der Zahl (8) vor, deshalb steht sie im Arbeitsbereich in der Zelle D7. Unsortiert!

mfg Piet


AW: Suchen / kopieren von mehreren Blättern
20.06.2023 08:54:34
Peter
Guten Morgen und danke für die Hilfe.

Der Code von Piet funktioniert super, allerdings bin ich beim ausprobieren darauf gestoßen, dass manche der Zellen noch etwas vor dem BALI: stehen haben und er diese natürlich dadurch auch als unterschiedlich erkennt und so mehrere "gleiche" in der Liste landen.
Kann man den Abgleich auf doppelte irgendwie ab einer bestimmten Zeichenfolge anfangen lassen?

Ich habe zum ausprobieren das Beispiel angepasst:
https://www.herber.de/bbs/user/159640.xlsm

Dankeschön

Peter


Anzeige
AW: Suchen / kopieren von mehreren Blättern
20.06.2023 16:25:07
Piet
Hallo Peter

ich schicke dir mal zwei Makros zum testen. Das erste ist wie gehabt, prüft aber ob "Bali" immer am Text Anfang steht!
Das zweite Makro listet dir auch doppelte mit der Zelladresse auf, wenn du wissen willst wo du Bali in Table 1-4 findest!

mfg Piet

  • Option Explicit '19.6.2023 Piet für Herber forum

    Sub Suchtext_suchen()
    Dim Txt As String, Adr1 As String
    Dim SuTxt As String, k As Integer
    Dim rFind As Range, c, z As Integer
    
    With Worksheets("Arbeitsbereich")
         .Range("C5:E100").ClearContents
         Application.ScreenUpdating = False
     
         SuTxt = .Range("D3").Value
         c = Len(SuTxt)  'Länge Text
         z = 5  '1-Zeile zum auflisten
         
         For k = 1 To Worksheets.Count
             If Worksheets(k).Name > "Arbeitsbereich" Then
                Set rFind = Worksheets(k).Cells.Find(What:=SuTxt, After:=[a1], LookIn:=xlFormulas, _
                    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True)
                If Not rFind Is Nothing Then
                   Adr1 = rFind.Address
                    Do  'KEINE doppelten auflisten!
                      '** Bali muss beim Text vorne stehen!!
                      If Left(rFind, c) > SuTxt Then GoTo nx
                      If InStr(Txt, rFind) = 0 Then
                         .Cells(z, 3) = Worksheets(k).Name
                         .Cells(z, 4) = rFind.Value
                         .Cells(z, 5) = rFind.Cells(1, 2)
                          z = z + 1:  Txt = Txt & vbLf & rFind.Value
                      End If
    nx:               Set rFind = Worksheets(k).Cells.FindNext(rFind)
                   Loop Until rFind.Address = Adr1
                End If
            End If
         Next k
    End With
    End Sub

  • Sub Suchtext_suchen_mit_Adresse()
    Dim Txt As String, Adr1 As String
    Dim SuTxt As String, k As Integer
    Dim rFind As Range, c, z As Integer
    
    With Worksheets("Arbeitsbereich")
         .Range("C5:E100").ClearContents
         Application.ScreenUpdating = False
     
         SuTxt = .Range("D3").Value
         c = Len(SuTxt)  'Länge Text
         z = 5  '1-Zeile zum auflisten
         
         For k = 1 To Worksheets.Count
             If Worksheets(k).Name > "Arbeitsbereich" Then
                Set rFind = Worksheets(k).Cells.Find(What:=SuTxt, After:=[a1], LookIn:=xlFormulas, _
                    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True)
                If Not rFind Is Nothing Then
                   Adr1 = rFind.Address
                    Do  'doppelte mit Adresse auflisten!
                       If Left(rFind, c) > SuTxt Then GoTo nx
                       Txt = rFind.Address(0, 0)
                       .Cells(z, 3) = Worksheets(k).Name & " " & Txt
                       .Cells(z, 4) = rFind.Value
                       .Cells(z, 5) = rFind.Cells(1, 2)
                        z = z + 1
    nx:                Set rFind = Worksheets(k).Cells.FindNext(rFind)
                   Loop Until rFind.Address = Adr1
                End If
            End If
         Next k
    End With
    End Sub



  • Anzeige
    AW: Suchen / kopieren von mehreren Blättern
    21.06.2023 13:24:48
    Peter
    Ich hatte gerade eine Idee.

    Kann man in das such und kopier script evtl eine Funktion einbauen, die erstmal alle Arbeitsblätter durchsucht und wenn in einer Zelle vor BALI: irgendwas steht das weglöscht. Die erstmal importierten Blätter können ruhig bearbeitet werden.

    Beste Grüße

    Peter


    AW: Suchen / kopieren von mehreren Blättern
    21.06.2023 23:29:08
    Piet
    Hallo Peter

    wenn du eine Zeile im Code durch diese neue Codezeile ersetzt sollte es klappen. Dann wird der Vordspann gelöscht.
    Du kannst die Änderung für beide Makros verwenden. Bitte prüfe das Ergebnis in der Tabelle. Bin gespannt auf deine Rückmeldung.

    'If Left(rFind, c) > SuTxt Then GoTo nx -- Nur diese eine Zeile löschen und ersetzen durch:
    If Left(rFind, Len(SuTxt)) > SuTxt Then _
    rFind.Value = Mid(rFind, InStr(rFind, SuTxt))

    mfg Piet


    Anzeige
    AW: Suchen / kopieren von mehreren Blättern
    22.06.2023 10:52:50
    Peter
    Danke Piet

    Es funktioniert alles genau so, wie es soll.
    Dankeschön

    Wirklich eine tolle Community hier

    Liebe Grüße

    Peter

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige