Discussion:
Zelle suchen die bestimmten Wert enthält, dann Spalten-Buchstabe ausgeben
(zu alt für eine Antwort)
Jan Wolter
2006-07-28 12:32:04 UTC
Permalink
Hallo,

ich habe eine Tabelle die wie folgt aufgebaut ist:

Spalten A B C D
Zeile 1 1 2 3 4
Zeile 2 5 6 7 8
...

Ich bräuchte jetzt folgende Funktion, komme aber nicht wirklich
weiter:

Suche in A1:D1 den Wert 3, gebe dann den Spaltenbuchstaben zurück.
Also in diesem Fall C. Alternativ kann auch C1 zurückgegeben werden,
das würde mir auch reichen.

Bis jetzt kann ich mir den Spalten-Buchstaben einer Zelle anzeigen
lassen, aber leider nur von einer Zelle, die ich vorher festlege:

=WECHSELN(ADRESSE(1;SPALTE(C1);4);1;"")

C1 würde ich also gerne durch "Zelle die in A1:D1 den Wert 3 hat"
ersetzen.

Vielen dank für jede Hilfe!

Jan
Claus Busch
2006-07-28 15:58:28 UTC
Permalink
Hallo Jan,
Post by Jan Wolter
=WECHSELN(ADRESSE(1;SPALTE(C1);4);1;"")
probiers mal so:
=WECHSELN(ADRESSE(1;VERGLEICH(3;1:1;0);4);1;"")
--
Mit freundlichen Grüssen
Claus Busch

Win XP Prof SP2; Office 2000 SP3
claus_busch(at)t-online.de
Michael Schüller
2006-07-28 16:28:59 UTC
Permalink
Hallo Jan,
Post by Jan Wolter
Spalten A B C D
Zeile 1 1 2 3 4
Zeile 2 5 6 7 8
...
Ich bräuchte jetzt folgende Funktion, komme aber nicht wirklich
Suche in A1:D1 den Wert 3, gebe dann den Spaltenbuchstaben zurück.
Also in diesem Fall C. Alternativ kann auch C1 zurückgegeben werden,
das würde mir auch reichen.
Da gibt's IMHO Möglichkeiten mit SVERWEIS bzw. WVERWEIS, die allerdings
zusätzliche "Hilfszellen" erforden und kompliziert sind.
Eine "einfache" Möglichkeit wäre VBA-Code (s.u.). Wenn Du lieber ohne VBA
arbeiten willst, sag bescheid, dann erläutere ich die anderen Möglichkeiten.

VBA-Code würde so aussehen:

- drücke Alt + F11, um den VBA-Editor anzuzeigen
- wähle im Menü des VBA-Editors: "Einfügen - Modul"

- füge folgenden Code ein:

---
Function fSpalte(lRange As Range, lValue As String) As Integer
Dim vCell As Range

'alle Zellen im übergebenen Bereich (lRange) prüfen
For Each vCell In lRange.Cells

'prüfen, ob die aktuelle Zelle den übergebenen Wert (lValue) enthält
If vCell.Value = lValue Then
fSpalte = vCell.Column 'Spalte der aktuellen Zelle zurückgeben
Exit Function 'Funktion beenden
End If

Next vCell

End Function
---

- wechsle zurück zu Excel

- füge (beispielweise) folgende Formel ein: =fSpalte(A1:D1;3)

Die Formel gibt die _erste_ Spalte im Bereich A1:D1 zurück, in der "3"
gefunden wird. Bereich und zu findenden Wert kannst Du natürlich frei
wählen.
Gibt es allerdings in Spalte 2 und 4 jeweils eine 3, bekommst Du nur 2
zurück. Die vierte Spalte fällt dann "durch's Rost".

Hoffe ich konnte Dir helfen.

Schönen Gruß
--
Michael
***@gmx.de
Michael Schüller
2006-07-28 16:51:06 UTC
Permalink
Nochmal hallo Jan,

die von mir gepostete VBA-Funktion liefert die _laufende Nummer_ der Spalte
zurück, also z.B. 2 und nicht "B".

Falls Du "B" haben willst, ersetze folgendes im VBA-Code:

1.
Function fSpalte(lRange As Range, lValue As String) As Integer
durch
Function fSpalte(lRange As Range, lValue As String) As string

2.
fSpalte = vCell.Column
durch
fSpalte = Mid(vCell.Address, 2, InStr(2, vCell.Address, "$") - 2)


Schönen Gruß
--
Michael
***@gmx.de
Loading...