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

Bestimmte Zeile markieren

Bestimmte Zeile markieren
24.04.2018 14:46:39
Dawid
Hallo,
ich hab ein kleines Problem. Ich hab eine Exceldatei mit 40000 Einträgen. Ich brauche immer die 3. Zeile von jedem Rennen. Da jedes Rennen eine unterschiedliche Anzahl an Pferden hat ist dies kaum möglich. Wichtig dafür ist für mich der Eintrag WIN_LOSE und BSP
Wenn die 3 Zeile auf ein neues Blatt kopiert wird oder markiert oder so dass es einfach für mich zu sehen ist wäre das super.
Ich hab extra einen Screenshot gemacht um es verständlicher darzustellen
https://ibb.co/kNJ14H
Vielen Dank für Eure Hilfe

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: warum stellst Du diese nicht im Forum ein? ...
24.04.2018 14:56:47
...
Hallo Dawid,
...nicht alle laden sich Dateien von fremden Servern aus dem Internet.
Auch wenn ich Deine Datei also nicht gesehen habe, vermutlich wird die bedingte Formatierung mit einer Formel auf Basis von ZÄHLENWENNs() das angestrebte ergeben.
Gruß Werner
.. , - ...
AW: warum stellst Du diese nicht im Forum ein? ...
24.04.2018 15:08:10
Dawid
Das klappt leider nicht da die Datei 7mb groß ist und hier nur 300 KB erlaubt sind.
Hab mal den Screenshot hier hochgeladen.. wie gesagt anbei handelt es sich nur um einen Screenshot
Userbild
AW: warum stellst Du diese nicht im Forum ein? ...
24.04.2018 15:17:12
Daniel
Hi
lade statt dem Bild lieber eine abgespeckte Beispieldatei hoch.
3-5 Rennen mit unterschiedlicher Pferdeanzahl sollten ausreichen.
im ersten Blatt zeigst du die Originaldaten und färbst ggf die Zeilen, die du haben willst.
(die 3. Zeile jeden Rennens)
auf dem zweiten Blatt zeigst du uns dann, wie du dir das Ergebnis vorstellst, von Hand erstellt, im Idealfall passend für die Ausgangsdaten.
außerdem, woran erkenne ich, welche Zeilen zu einem Rennen gehören?
im gezeigen Screenshot kommt der Text "Rennen" nirgendwo vor.
man könnte zwar vermuten, dass damit die Spalte "EVENT_NAME" gemeint ist, aber solche Dinge solltest du erklären.
Bedenke, wir haben überhaupt keine Informationen über deine Datei und deine Aufgabenstellung, außer denen, die du uns gibst. Setzte da bitte NICHTS als automatisch vorhandenes Hintergrundwissen voraus.
Gruß Daniel
Anzeige
AW: warum stellst Du diese nicht im Forum ein? ...
24.04.2018 15:17:29
SF
Hola,
Wichtig dafür ist für mich der Eintrag WIN_LOSE und BSP
und was ist daran wichtig? Leider sieht man kein händisch eingetragenes Wunschergebnis auf dem Bild.
Gruß,
steve1da
AW: es wird nicht Deine Originaldatei benötigt ...
24.04.2018 15:20:15
...
Hallo Dawid,
... eine repräsentativer Auszug davon ist ausreichend. Und zeige daran z.B. durch händisches Hinterlegen der Zellfarbe für die ersten zwei "3. Rennen" auf, welche Zellen Du markiert haben möchtest.
Gruß Werner
.. , - ...
AW: es wird nicht Deine Originaldatei benötigt ...
24.04.2018 15:42:04
Dawid
Hallo vielen Dank für Euer Feedback. Ihr habt recht ohne Hintergrundinfos ist garnichts möglich. Es soll im von Spalte A ausgegangen werden das Sind die Events. Ich hab eine Exceldatei erstellt und alles farblich markiert auf dem Vorher Blatt die Zeile und auf dem Nachher Blatt das Ergebnis. Dies ist händisch gemacht. Es würde zu lange dauern für 40.000 Zeilen wenn man das noch Hand macht. Danke Euch allen.
https://www.herber.de/bbs/user/121245.xlsx
Anzeige
AW: für mich momentan noch nicht eindeutig ...
24.04.2018 16:03:36
...
Hallo Dawid,
... ich erkenne noch keinen logischen Zusammenhang warum ausgerechnet die von Dir markierten Datensätze markiert sind. Das solltest Du jetzt noch verbal begründen.
Gruß Werner
.. , - ...
AW: es wird nicht Deine Originaldatei benötigt ...
24.04.2018 16:18:28
SF
Hola,
A2 bis Fxyz markieren. Als Formel in der bed. Formatierung:
=ZÄHLENWENN($A$2:$A2;$A2)=3

Gruß,
steve1da
AW: da konnte ich wohl nicht mehr bis 3 zählen owT
24.04.2018 17:19:47
...
Gruß Werner
.. , - ...
AW: Funktioniert nicht
24.04.2018 19:33:40
Dawid
Hallo,
leider funktioniert das ganze nicht. Ab der Zeile 100 vergisst der manche Events bzw lässt einfach viele dazwischen Frei obwohl alles Exakt dasteht. Woran kann dass liegen. Insgesamt habe ich nur 439 Datensätze von 40.000.
Wenn ich von 10 Einträgen pro Event ausgehe müßte ich 4000 angezeigt bekommen und nicht 439, jemand einen Rat?
Danke schön
Anzeige
AW: Funktioniert nicht
24.04.2018 19:39:43
SF
Hola,
du kannst die Formel in G2 schreiben und nach unten kopieren, dann siehst du wo überall eine 3 steht. Wenn da Unstimmigkeiten sind, dann sind die Werte eben nicht komplett identisch - z.B. ein Leerzeichen am Ende des Events ist schon ein Unterschied.
Das kannst aber nur du sehen/prüfen.
Gruß,
steve1da
AW: Bestimmte Zeile markieren
24.04.2018 22:01:23
Sandra
Hallo
Ich habe mir zu Ihrer Fragestellung etwas Gedanken gemacht und komme zum folgenden Ergebnis, wobei Ihr Problem in Bezug auf Ihre Fragestellung wirklich klein ist:
Sub Selektion_Pferderennen()
Dim wsQuelle, wsErgenis, ws As Worksheet
Dim xkeyBasis, xkeyErgebnis As Variant
Dim dicBasis, dicErgebnis As Object
Dim rngBereich, rngB, rngDatenzeile, rngDZ As Range
Dim i, lngBeginn, lngEnde, lngSpalte As Long
Dim strSpalte, strletzteSpalte, strDaten, strErgebnis As String
Dim blnWert As Boolean
'Allgemeiner Spaltenbeginn
strSpalte = "A"
'Ersten Zeile im Tabellenblatt mit den Daten
lngBeginn = 1
'Einstellung der relevanten Zeile nach dem ersten Eintrag
lngZeile = 2
'Festlegung des Tabellenblattnamens mit den Ergebnissen
strErgebnis = "Ergebnis"
Set wsQuelle = Worksheets(ActiveSheet.Name)
Set dicBasis = CreateObject("scripting.dictionary")
Set dicErgebnis = CreateObject("scripting.dictionary")
Application.ScreenUpdating = False
With wsQuelle
'Ermittlung der letzten Spalte und letzten Zeile
strletzteSpalte = Left$(Cells(lngBeginn, Cells(lngBeginn, Columns.Count).End(xlToLeft). _
Column).Address(True, False), InStr(lngBeginn, Cells(lngBeginn, Cells(lngBeginn, Columns.Count).End(xlToLeft).Column).Address(True, False), "$") - 1)
lngEnde = .Range(strSpalte & Rows.Count).End(xlUp).Row
'Damit die Ueberschriften nicht einbezogen wird, wird der Zeilenbeginn um 1 erhöht
Set rngBereich = .Range(strSpalte & lngBeginn + 1 & ":" & strSpalte & lngEnde)
'Einlessen der Einzelwerte aus dem zuvor festgelegten BEreich, wobei keine Duplicate ü _
bernommen werden
For Each rngB In rngBereich
xkeyBasis = rngB.Value
dicBasis(xkeyBasis) = 0
Next rngB
'Festlegung des Status, damit nur beim ersten Durchgang die Spaltenüberschriften eingelesen  _
werden
blnWert = True
'Ermittlung des gewünschten Wertes
For Each xkeyBasis In dicBasis
For Each rngB In rngBereich
If rngB.Value = xkeyBasis Then
If blnWert = True Then
Set rngDatenzeile = .Range(strSpalte & lngBeginn & ":" & strletzteSpalte &  _
lngBeginn)
'Einlesen der Ueberschrift
For Each rngDZ In rngDatenzeile
strDaten = strDaten & ";" & rngDZ.Value
Next rngDZ
'Hinzufügen der Überschriften
xkeyErgebnis = Right$(Trim(strDaten), Len(Trim(strDaten)) - 1)
dicErgebnis(xkeyErgebnis) = 0
'Aufhebung des Bereichs und leeren des Strings
Set rngDatenzeile = Nothing
strDaten = ""
'Damit die Überschrift nur einmal eingelesen wird
blnWert = False
End If
'Festlegung der Datenzeile als Bereich
Set rngDatenzeile = .Range(strSpalte & rngB.Row + lngZeile & ":" &  _
strletzteSpalte & rngB.Row + lngZeile)
'Verkettung der Datenzeile als string
For Each rngDZ In rngDatenzeile
strDaten = strDaten & ";" & rngDZ.Value
Next rngDZ
'Einlesen der Zeilen
xkeyErgebnis = Right$(Trim(strDaten), Len(Trim(strDaten)) - 1)
dicErgebnis(xkeyErgebnis) = 0
strDaten = ""
Set rngDatenzeile = Nothing
'Wenn der Wert gefunden wurde, dann wird die For-Schleife verlassen
Exit For
End If
Next rngB
Next xkeyBasis
'Prüfen, ob Tabellenblatt mit Namen bereits existiert und Index des Tabellenblattes mit der  _
Datenquelle ermitteln
For Each ws In Worksheets
If ws.Name = strErgebnis Then
Application.DisplayAlerts = False
ws.Delete
Application.DisplayAlerts = True
End If
Next ws
i = 0
For Each ws In Worksheets
i = i + 1
If ws.Name = wsQuelle.Name Then
i = i
Exit For
End If
Next ws
'Einfügung des Tabellenblattes mit den Ergebnissen nach dem Tabellenblatt mit den  _
Basisdaten
Worksheets.Add After:=Worksheets(i)
ActiveSheet.Name = strErgebnis
Set wsErgebnis = Worksheets(ActiveSheet.Name)
'Eintragung der Ergebnise in das Tabellenblatt
With wsErgebnis
i = lngBeginn
For Each xkeyErgebnis In dicErgebnis
.Range(strSpalte & i).Value = xkeyErgebnis
i = i + 1
Next xkeyErgebnis
lngEnde = .Range(strSpalte & Rows.Count).End(xlUp).Row
'Autteilung der Ergebnisse auf verschiedene Spalten im neuen Tabellenblatt
.Range(strSpalte & lngBeginn & ":" & strSpalte & lngEnde).Select
Selection.TextToColumns Destination:=Range(strSpalte & lngBeginn), DataType:= _
xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False
.Columns(strSpalte & ":" & strletzteSpalte).AutoFit
End With
End With
Application.ScreenUpdating = True
Set rngBereich = Nothing
Set dicErgebnis = Nothing
Set dicBasis = Nothing
Set wsQuelle = Nothing
Set wsErgebnis = Nothing
End Sub

Anzeige
AW: Bestimmte Zeile markieren
25.04.2018 20:01:10
Sandra
Fals Sie kein Makro anwenden möchten können Sie auch folgende Formel verwenden:
=WENN(ZEILE()=1;"";WENN(ZEILE()=2;1;WENN(ISTFEHLER($A1BEREICH.VERSCHIEBEN($A1;-3;0));""; WENN(UND($A1BEREICH.VERSCHIEBEN($A1;-3;0);$A1=BEREICH.VERSCHIEBEN($A1;-2;0));3; WENN($A1BEREICH.VERSCHIEBEN($A1;-1;0);1;"")))))
Diese Formel wird in die erste Zeile eingesetzt und einfach nach unten kopiert. Daher empfiehlt es sich die erste leere Spalte nach den Daten zu nehmen. Im Anschluss hieran können Sie entweder über kopieren und nur Werte einsetzen den Autofilter aktivieren oder gleich den Autofilter setzen und nur die Werte mit 3 anzeigen lassen. Die Formel ist so aufgebaut, dass bei einem Wechsel der Eintrag 1 ebenfalls eingetragen wird.
Anzeige
AW: Bestimmte Zeile markieren
25.04.2018 20:09:04
Sandra
Fals Sie kein Makro anwenden möchten können Sie auch folgende Formel verwenden:
=WENN(ZEILE()=1;"";WENN(ZEILE()=2;1;WENN(ISTFEHLER($A1BEREICH.VERSCHIEBEN($A1;-3;0));""; WENN(UND($A1BEREICH.VERSCHIEBEN($A1;-3;0);$A1=BEREICH.VERSCHIEBEN($A1;-2;0));3; WENN($A1BEREICH.VERSCHIEBEN($A1;-1;0);1;"")))))
Diese Formel wird in die erste Zeile eingesetzt und einfach nach unten kopiert. Daher empfiehlt es sich die erste leere Spalte nach den Daten zu nehmen. Im Anschluss hieran können Sie entweder über kopieren und nur Werte einsetzen den Autofilter aktivieren oder gleich den Autofilter setzen und nur die Werte mit 3 anzeigen lassen. Die Formel ist so aufgebaut, dass bei einem Wechsel der Eintrag 1 ebenfalls eingetragen wird.
Alternativ können Sie die Formel etwas abgeändert auch in der bedingten Formatierung hinterlegen. Diese lautet dann:
=WENN(WENN(ZEILE()=1;"";WENN(ZEILE()=2;1;WENN(ISTFEHLER($A1BEREICH.VERSCHIEBEN($A1;-3;0));""; WENN(UND($A1BEREICH.VERSCHIEBEN($A1;-3;0);$A1=BEREICH.VERSCHIEBEN($A1;-2;0));3; WENN($A1BEREICH.VERSCHIEBEN($A1;-1;0);1;"")))))=3;3)
Anzeige
AW: Bestimmte Zeile markieren
25.04.2018 20:15:55
SF
Hola,
ziemlich monströs wo eine einfache Zählenwenn Formel doch reicht. Außerdem löst das meiner Meinung nach nicht das Problem, was nur der TE sehen kann - es scheint Unterschiede bei scheinbar gleichen Bezeichnungen zu geben.
Gruß,
steve1da

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige