Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
880to884
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
880to884
880to884
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Suche/Ausgabe auf neuem Blatt

Suche/Ausgabe auf neuem Blatt
24.06.2007 07:06:00
Regina
Guten Morgen!
Habe ein kleines Problem und würde mich über etwas Hilfe freuen.
In meiner Tabelle stehen in Spalte D ab D2 (bis ...) Zahlen.
Es sind unterschiedliche Zahlen, aber auch Zahlen, die sich wiederholen können.
In den Spalten Q, S, T, U, V, W (jeweils ab der zweiten Zeile) stehen ebenfalls Zahlen.
Nun möchte ich nach einer Zahl aus Spalte D suchen(die in verschiedenen Zeilen vorkommen kann).
Alle Daten, die sich in den entsprechenden Zeilen in den Spalten Q-W befinden sollen in ein neues Blatt kopiert werden.
Beispielmappe:
https://www.herber.de/bbs/user/43516.xls
Liebe Grüße
Regina

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suche/Ausgabe auf neuem Blatt
24.06.2007 08:14:46
Regina
Hallo Hajo,
Danke für den link; ist aber leider nicht das was ich meinte.
Wollte eine Zahl, die in Spalte D vorkommt, in eine Suchbox eingeben und dann soll auf einem neuen Blatt ausgegeben werden, welche dazugehörigen Zahlen in den entsprechenden Zeilen in den Spalten Q-W wie oft vorkommen
Vielleicht kannst Du Dir die Datei doch mal anschauen?
Im Blatt Suchergebnis ist das vielleicht besser zu verstehen, als ich es hier erkläre.
Liebe Grüße
Regina

Anzeige
AW: Suche/Ausgabe auf neuem Blatt
24.06.2007 09:12:22
Hajo_Zi
Hallo Regina,
ich vermute mal dies ist nur per VBA lösbar. In VBA unter der Tabelle "Suchergebnisse"

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
'* H. Ziplies                                     *
'* 24.06.07                                       *
'* erstellt von Hajo.Ziplies@WEB.de               *
'* http://Hajo-Excel.de
If Target.Count > 1 Then Exit Sub           ' mehr als eine Zelle geändert
If Target.Address  "$A$2" Then Exit Sub   ' Zelle verschieden von Eingabe Zelle
Dim Loletzte As Long                        ' Letzte belegte Zelle
Dim LoI As Long                             ' Schleifenvariable Zeile
Dim InI As Integer                          ' Schleifenvariable Spalte
Dim LoZeile As Long                         ' Schleifenvarible Zeile in die geschrieben  _
wird, Anzahl
LoZeile = 2                                 ' erste Zeile in die geschrieben werden soll
'   letzte belegte Zeile unabhängig von Excelversion für Spalte C (3)
Loletzte = IIf(IsEmpty(Cells(Rows.Count, 3)), Cells(Rows.Count, 3).End(xlUp).Row, Rows. _
Count)
If Loletzte = 1 Then Loletzte = 2
Application.EnableEvents = False            ' Reaktion auf Eingabe aus
Application.ScreenUpdating = False          ' Bildschirmaktualisierung aus
Range("B2:C" & Loletzte) = ""
With Worksheets("Test")                     ' erstmal alle Werte übertragen
'       Letzte Zeile in Tabelle Test
Loletzte = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
For LoI = 2 To Loletzte                 ' Schleife über alle Zeilen der Tabelle Test
If .Cells(LoI, 4) = Target Then     ' Prüfen ob Zellinhalt = Eingabe
For InI = 17 To 23              ' Schleife über die Spalten
If .Cells(LoI, InI)  "" Then
'                       Eingabe in Spalte A schreiben
If LoZeile = 2 Then Cells(LoZeile, 1) = Target
Cells(LoZeile, 3) = .Cells(LoI, InI)
LoZeile = LoZeile + 1
End If
Next InI
End If
Next LoI
'       alle Daten übertragen, jetzt sortieren
Loletzte = IIf(IsEmpty(Cells(Rows.Count, 3)), Cells(Rows.Count, 3).End(xlUp).Row, Rows. _
Count)
Range("C2:C" & Loletzte).Sort Key1:=Range("C2"), Order1:=xlAscending, Header:=xlNo,  _
MatchCase:=False, Orientation:=xlTopToBottom
'       Doppelte zusammenfassen
LoZeile = 1                                 ' Anzahl auf    1 setzen
For LoI = Loletzte - 1 To 2 Step -1         ' Schleife über alle übertragenen Datensä _
tze
If Cells(LoI + 1, 3) = Cells(LoI, 3) Then
LoZeile = LoZeile + 1               ' Anzahl um 1 erhöhen
Rows(LoI + 1).Delete                ' doppelte Zeile Löschen
Else
Cells(LoI + 1, 2) = LoZeile         ' Anzahl eintragen
LoZeile = 1                         ' Anzahl wieder auf 1 setzen
End If
Next LoI
Cells(2, 2) = LoZeile                       ' Anzahl vom ersten Datensatz eintragen
Application.EnableEvents = True             ' Reaktion auf Eingabe ein
Application.ScreenUpdating = True           ' Bildschirmaktualisierung ein
End With
End Sub


Ich hoffe mal ich habe nichts übersehen.
Gruß Hajo

Anzeige
an HaJo
24.06.2007 11:08:00
Oberschlumpf
Hi HaJo
"Ich hoffe mal ich habe nichts übersehen"
Doch, hast du leider (zumindest in der Bsp-Datei von Regina)
Wenn ich deinen Code in der Bsp-Datei von Regina ausprobiere, wird das Sheet, in dem die zu suchenden Daten stehen, so ricthig "zerschossen" :-)
Du hast im Code vergessen, auf das richtige Sheet ("Suchergebnis") zu verweisen.
So werden im anderen Sheet zwar die gesuchten Werte eingetragen, aber gleichzeitig werden auch Zeilen gelöscht, was ja nicht erwünscht war.
Nun hoffe ich, dass sich Regina noch nicht meldete, weil sie noch keine Zeit dazu hatte und nicht aus dem Grund, weil sie deinen Code gleich direkt in ihrer ORIGINAL-Datei testete, OHNE von selbiger zuvor eine Sicherheitskopie erstellt zu haben, und jetzt "voll durch den Wind ist", weil ihre vllt-mehr1000Zeilen-Datei "kaputt" ist :-)
Ciao
Thorsten

Anzeige
AW: an HaJo
24.06.2007 11:18:00
Hajo_Zi
Hallo Torsten,
auf die Tabelle Suchergebins brauche ich nicht zu verweisen. Da es ein Change-Ereignis ist. Ich bin davon ausgegangen das in der Tabelle "Suchergebnisse" nur die Suchergebnisse stehen, was ich aus dem Namen abgeleitet habe. Kleine Korrekturen habe ich im neuer Code vorgenommen aber nicht am Verfahren.
Aus der Tabelle "Test" werden nur Daten ausgelesen und nicht gelöscht. Die Tabelle wird mit meinem Code nicht verändert. in meinem Beitrag Stand.
In VBA unter der Tabelle "Suchergebnisse"
Gruß Hajo

Anzeige
AW: an HaJo
24.06.2007 11:27:38
Oberschlumpf
Hi Hajo
Aber Regina schreibt unter anderem doch:
"Alle Daten, die sich in den entsprechenden Zeilen in den Spalten Q-W befinden sollen in ein neues Blatt kopiert werden."
Somit ist deine neue Lösung auch nicht wirklich richtig, zumal auch mit deinem neuen Code in dem Sheet, in dem die Quelldaten stehen, weiterhin Zeilen gelöscht werden, was Regina, glaub ich, nicht wirklich gefallen wird ;-)
Ciao
Thorsten (mit h ;-) )

AW: Suchergebnisse auflisten
24.06.2007 11:30:55
Hajo_Zi
Hallo Thorsten,
Endschuldigung für den Schreibfehler.
Da müssen wir mal abwarten was Regina dazu sagt. Falls noch eine Rückmeldung kommt.
Gruß Hajo

Anzeige
AW: an HaJo
24.06.2007 11:32:00
Regina
Hallo Thorsten,
ich benutze immer Sicherungskopien um etwas auszuprobieren ;-)
Mit "in ein neues Blatt" meinte ich das Blatt "Suchergebnis"
Da habe ich mich wohl nicht klar ausgedrückt.
Gruß Regina

AW: an HaJo
24.06.2007 11:39:00
Oberschlumpf
Hi Regina
Ich hatte mir schon gedacht, welches Sheet du meinst :-)
Und dein Satz zu Sicherheitskopien ist eine wirklich gute Einstellung, weil oft arbeitserleichternd..grins
Ich versuchte mich auch schon an einer Lösung zu deinem Problem, bin aber bis jetzt gescheitert :-). Außerdem ist HaJo ja fast fertig.
Ciao
Thorsten

AW: an HaJo
24.06.2007 11:49:00
Regina
Hallo Thorsten,
auch wenn Hajo schneller war, auch Dir vielen Dank für Deine Bemühung!
Find ich echt toll, dass einem hier so schnell und geduldig geholfen wird!
Dank Euch beiden
Liebe Grüße
Regina

Anzeige
AW: Code korrektur
24.06.2007 11:02:00
Hajo_Zi
Hallo Regina,

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
'* H. Ziplies                                     *
'* 24.06.07                                       *
'* erstellt von Hajo.Ziplies@WEB.de               *
'* http://Hajo-Excel.de
If Target.Count > 1 Then Exit Sub           ' mehr als eine Zelle geändert
If Target.Address  "$A$2" Then Exit Sub   ' Zelle verschieden von Eingabe Zelle
Dim Loletzte As Long                        ' Letzte belegte Zelle
Dim LoI As Long                             ' Schleifenvariable Zeile
Dim InI As Integer                          ' Schleifenvariable Spalte
Dim LoZeile As Long                         ' Schleifenvarible Zeile in die geschrieben  _
wird, Anzahl
LoZeile = 2                                 ' erste Zeile in die geschrieben werden soll
'   letzte belegte Zeile unabhängig von Excelversion für Spalte C (3)
Loletzte = IIf(IsEmpty(Cells(Rows.Count, 3)), Cells(Rows.Count, 3).End(xlUp).Row, Rows. _
Count)
If Loletzte = 1 Then Loletzte = 2
Application.EnableEvents = False            ' Reaktion auf Eingabe aus
Application.ScreenUpdating = False          ' Bildschirmaktualisierung aus
Range("B2:C" & Loletzte) = ""
With Worksheets("Test")                     ' erstmal alle Werte übertragen
'       Letzte Zeile in Tabelle Test
Loletzte = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
For LoI = 2 To Loletzte                 ' Schleife über alle Zeilen der Tabelle Test
If .Cells(LoI, 4) = Target Then     ' Prüfen ob Zellinhalt = Eingabe
For InI = 17 To 23              ' Schleife über die Spalten
If .Cells(LoI, InI)  "" Then
Cells(LoZeile, 3) = .Cells(LoI, InI)
LoZeile = LoZeile + 1
End If
Next InI
End If
Next LoI
'       alle Daten übertragen, jetzt sortieren
Loletzte = IIf(IsEmpty(Cells(Rows.Count, 3)), Cells(Rows.Count, 3).End(xlUp).Row, Rows. _
Count)
LoZeile = 1                         ' Anzahl auf    1 setzen
If Loletzte > 2 Then
Range("C2:C" & Loletzte).Sort Key1:=Range("C2"), Order1:=xlAscending, Header:=xlNo,  _
MatchCase:=False, Orientation:=xlTopToBottom
'           Doppelte zusammenfassen
For LoI = Loletzte - 1 To 2 Step -1 ' Schleife über alle übertragenen Datensätze
If Cells(LoI + 1, 3) = Cells(LoI, 3) Then
LoZeile = LoZeile + 1       ' Anzahl um 1 erhöhen
Rows(LoI + 1).Delete        ' doppelte Zeile Löschen
Else
Cells(LoI + 1, 2) = LoZeile  ' Anzahl eintragen
LoZeile = 1                  ' Anzahl wieder auf 1 setzen
End If
Next LoI
End If
'       Anzahl vom ersten Datensatz eintragen
If Cells(2, 3)  "" Then Cells(2, 2) = LoZeile
Application.EnableEvents = True          ' Reaktion auf Eingabe ein
Application.ScreenUpdating = True        ' Bildschirmaktualisierung ein
End With
End Sub


Gruß Hajo

Anzeige
AW: Code korrektur
24.06.2007 11:09:11
Oberschlumpf
da hatte ich wohl zu lange zum Schreiben benötigt :-)

AW: Code korrektur
24.06.2007 11:29:00
Regina
Hallo Hajo,
nun habe ich Zeit Deinen Vorschlag auszuprobieren.
Kannst Du mir bitte noch schreiben wo ich den Code eingeben muß?
Hab nicht viel Ahnung von VBA :(
Regina
PS
Benutze immer Sicherungskopien um etwas auszuprobieren :)

AW: Code korrektur
24.06.2007 11:36:00
Hajo_Zi
Hallo Regina,
gehe auf das Register "Suchergebnisse", rechte Maustaste,Code azeigen, Code ins rechte Fenster kopieren. VBA Editor schliesssen und Wert in A2 eingeben.
Gruß Hajo

Anzeige
AUUTSCHH!!..ein groosses SORRY an HaJo!
24.06.2007 11:44:17
Oberschlumpf
Hallo HaJo
Muss mich ganz doll bei dir entschuldigen!!
Dein Code funzt 100%!!!!
Ich hatte selbigen immer ins Change-Ereignis des Quellsheets gesetzt - Ergebnis = von mir beschriebener Fehler.
Sorry, da hatte ich zu schnell "geschossen" - aber gut, dass wir alle Menschen sind, von denen jeder mal n Fehler machen kann :-)
Ciao
Thorsten

Daaaanke
24.06.2007 11:46:31
Regina
Hallo Hajo,
Da kam zwar eine Fehlermeldung Syntaxfehler, aber das habe ich - auch mit meinen sehr beschränkten Kenntnissen - hinbekommen (es fehlte ein ' im Kommentar)
Das was ich wollte, hast Du super hinbekommen.
Vielen, vielen Dank für für Deine Mühe!
Liebe Grüße
Regina

Anzeige
AW: Daaaanke
24.06.2007 11:53:48
Hajo_Zi
Hallo Regina,
ich muss hierzu nur schreiben. Das Forum setzt nich alles 1 zu 1 um. Der * gehört eine Zeile höher.
Aus diesem Grund kam bei Dir der Fehler. Ich hatte den Code schon getestet bei mir. Solchen Code schreibe ich niicht ohne Testung.
Den Code habe ich Etpppenweise erstellt, was man auch ein wenig an den Kommentaren sieht.
Gruß Hajo

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige