483 Aufrufe
Gefragt in Tabellenkalkulation von
Ich habe eine Matrix und will die Zeilen darauf hin prüfen, ob sie ein "X" enthält. Es können auch mehrere Kreuzchen pro Zeile sein. WENN also die Zelle der Zeile ein Kreuz enthält, DANN gib die Spaltenüberschrift (Text o. Zahl) zurück. Sind mehrere "X" in einer Zeile, dann mit ";" verketten.

Das überfordert mich grad. Ich bin dankbar für jeden Hinweis.

11 Antworten

0 Punkte
Beantwortet von
=INDEX($B$1:$D$1;VERGLEICH("X";B3:D3;0))
Damit bekomme ich nur die Spalte des ersten "X".
Hat jemand eine Idee, wie ich auch die anderen der Zeile abfragen kann?
0 Punkte
Beantwortet von
Hi Eva5 ^^

Vielleicht so ?
Bin ja nicht so der Frmelfreak,daher ein Makro :-)

Gruss Nighty

Nicht berücksichtigt sind geschuetzte Bereiche wie verbundene Zellen
Erste freie Spalte ist die Ausgebe

Sub xErfassung()
Dim LZeile As Long, LSpalte As Long, ZeilenIndex As Long, SpaltenIndex As Long
Dim Zaehler As Integer
Dim Daten As Variant, Ergebnis As Variant
Dim Puffer1 As String, Puffer2 As String
LZeile = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
LSpalte = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
Daten = Range(Cells(1, 1), Cells(LZeile, LSpalte))
Ergebnis = Range(Cells(1, LSpalte + 1), Cells(LZeile, LSpalte + 1))
For ZeilenIndex = 1 To LZeile
For SpaltenIndex = 1 To LSpalte
If UCase(Daten(ZeilenIndex, SpaltenIndex)) = "X" Then
Puffer1 = Daten(1, SpaltenIndex)
Puffer2 = Puffer2 & Daten(1, SpaltenIndex) & ";"
Zaehler = Zaehler + 1
End If
Next SpaltenIndex
If Zaehler = 1 Then Ergebnis(ZeilenIndex, 1) = Puffer1
If Zaehler > 1 Then Ergebnis(ZeilenIndex, 1) = Mid(Puffer2, 1, Len(Puffer2) - 1)
Zaehler = 0
Puffer1 = ""
Puffer2 = ""
Next ZeilenIndex
Range(Cells(1, LSpalte + 1), Cells(LZeile, LSpalte + 1)) = Ergebnis
End Sub
0 Punkte
Beantwortet von
Wow, da krieg ich Angst... Vielen Dank für Deine Mühe!
Also ich kenne mich mit Makros wirklich gar nicht aus.
Ich kann es nicht ausführen: Typenunverträglichkeit in Zeile

If UCase(Daten(ZeilenIndex, SpaltenIndex)) = "X" Then

Ich dachte inzwischen an ZÄHLENWENN oder sowas, aber ich bekomme nur das erste Ergebnis...
0 Punkte
Beantwortet von
Hi Eva5 ^^

Da brauchst keinen schreck zu bekommen,ich habe ein Array gewaehlt um eine schnelle Laufzeit auch bei großen Datenmengen zu gewaehrleisten!

Der code war getestet :-)

Lade mal eine Beispieldatei hoch ,im XLS Format bitte(unter safeas erreichbar)
Google nach Datei hochladen
Den angezeigten Link dann hier einfuegen!

Gruss Nighty
0 Punkte
Beantwortet von
Hi Eva5 ^^

Im groben!
Formeln sind in der Handhabung einfach,blähen die Datei aber auf,je nach Datenmengen
Makros lassen sich Dynamisch gestalten

Gruss Nighty
0 Punkte
Beantwortet von
Verstehe. Das Original ist auch riesig. Schließberechtigungen...
Da hab ich's abgelegt:

Datei von filehorst.de laden
0 Punkte
Beantwortet von
Hi All,

man kann natürlich auch beides zusammenführen indem man sich eine Eigene Formel
bastelt. Wusst ich doch, dass wir fast genau diese Frage erst vor kurzem hier hatten:
www.supportnet.de/t/2494487

Habe den dortigen Code mal für dich und spätere Fragesteller ein wenig angepasst:

Option Explicit
Function Überschrift(Bereich As Range, Suchwert As Variant, Optional Trennzeichen As
String = ", ") As String

Dim s As String, c As Range

For Each c In Bereich.Rows(Bereich.Rows.Count).Cells
If LCase(c) = Suchwert Then s = s & c.Offset(-Bereich.Rows.Count + 1, 0) & Trennzeichen
Next c
s = Left(s, Len(s) - Len(Trennzeichen))
Überschrift = s

End Function


Der Code gehört im VBA-Editor (Alt + F11) in ein Standardmodul (z.B. Modul1, kannst du
über Einfügen -> Modul hinzufügen)

Als Formel gibst du in deinem Arbeitsblatt dann z.B. ein: =Überschrift(C$6:G7;"x";";")
Dann einfach die Formel runterziehen.

Übrigens, wenn du den dritten Parameter mit dem Trennzeichen in der Formel weglässt
wird automatisch ", " als Trennzeichen verwendet.

Gruß Mr. K.
0 Punkte
Beantwortet von
Und wieder hat der Browser beim Einfügen hier einen Fehler eingebaut. Schreibe in der
Ersten Zeile hinter As ein Leerzeichen gefolgt von einem Unterstrich, dann gehts.
0 Punkte
Beantwortet von
Hallo Eva5 ^^ ^^

Es sind es verbundene zellen!
Ich korrigiere das übers Wochenende!

Schon hast du dann mehrere Möglichkeiten zum testen,was dir am besten gefaellt!

Gruss Nighty
0 Punkte
Beantwortet von
Wow!!! Das ging ja super schnell!
Vielen herzlichen Dank, Problem gelöst. Und elegant dazu. ;)
Ich hab zwar keinen blassen Schimmer wie genau, aber es funktioniert!

Daaaanke!!! :)
...