Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema SpinButton
BildScreenshot zu SpinButton SpinButton-Seite mit Beispielarbeitsmappe aufrufen

Namenvergabe bedingt | Herbers Excel-Forum


Betrifft: Namenvergabe bedingt von: Harald S
Geschrieben am: 13.01.2010 12:29:15

Hallo Excellfreaks

hab im ganzen Forum schon nach einer Lösung gefunden und leider noch nichts gefunden.

Problem:
Spalte A: Eintrag eines Namen
Spalte B: Eintrag x oder y

nun will ich erreichen das in einer Gültigkeitsabfrage nur mehr Namen gelistet werden die in Spalte B mit einem X gekennzeichnet sind angezeigt werden.

wäre nett wenn sich jemand diesem Problem annimmt

Danke im voraus
Harald

  

Betrifft: AW: Namenvergabe bedingt von: ingoG
Geschrieben am: 13.01.2010 12:51:37

Hallo Harald,

was hälst Du von einer Hilfsspalte auf die Du die Gültigkeit referenzierst.

in dieser Hilfsspalte kannst Du per Formel nur die Namen eintragen, die ein x in Spalte B haben...


Ich hoffe, das reicht Dir als ansatz.

Gruß Ingo
PS eine Rückmeldung wäre nett...


  

Betrifft: AW: Namenvergabe bedingt von: Harald S
Geschrieben am: 13.01.2010 12:54:52

an Hilfszeile hab ich auch schon gedacht und ausprobiert.
jdoch werden hier auch alle Leerzeilen übernommen und im der Gültigkeitsauswahl sind dies auch ausgeführt(Namen werden nicht lückenlos angezeigt).


  

Betrifft: AW: Namenvergabe bedingt von: ingoG
Geschrieben am: 13.01.2010 13:48:16

Hallo Harald,

wenn Du mit Leerzeilen am ende leben kannst, geht folgende MatrixFormel:

in Spalte A1:a1000 stehen die Namen
in B1:b1000 die x,Y

dann trägst du zB in c1 folgende Formel ein:

=WENN(ZÄHLENWENN(B:B;"x")<ZEILE();"";INDEX(A:A;MIN(WENN(ZÄHLENWENN(INDIREKT("B1:B"&ZEILE($1:$1000) );"X")=ZEILE();ZEILE($1:$1000);99999))))

(Matrixformel, Eingabe abschließen mit Strg-Shift-Enter)

und kopierst sie nach unten.

Deine Gültigkeitsliste referenzierst Du dann auf ZB c1:c100

Gruß Ingo
PS eine Rückmeldung wäre nett...


  

Betrifft: @ingoG von: Björn B.
Geschrieben am: 13.01.2010 15:41:33

Hallo Ingo,

siehe mal meine Antwort von 13:42, das ist noch etwas kürzer.

Außerdem war ich etwas schneller ;-) (Spaß)

Gruß
Björn B.


  

Betrifft: AW: Namenvergabe bedingt von: welga
Geschrieben am: 13.01.2010 12:54:57

Hallo Harald S,

in Excel mit Formel:

=wenn(B1="x";A1;"")

mit VBA:

Sub test()
Dim i As Long
Dim ii As Long

ii = 0
For i = 1 To Cells(1, 1).End(xlDown).Row
    If Cells(i, 2) = "x" Then
    ii = ii + 1
    Cells(ii, 4) = Cells(i, 1)
    End If
Next i
End Sub
Gruß
welga


  

Betrifft: AW: Namenvergabe bedingt von: welga
Geschrieben am: 13.01.2010 13:24:39

Hallo nochmals,

markiere Spalte "A" und vergebe einen Gültigkeitsbereich als Liste "=$D:$D".

Dann schreibe das Makro in das entsprechende Tabellenblatt:

Private Sub worksheet_change(ByVal target As Range)
Dim i As Long
Dim ii As Long
Dim a As Long
If Not Intersect(Range(Cells(1, 2), Cells(Cells(1, 2).End(xlDown).Row, 2)), target) Is Nothing  _
Then
    Application.ScreenUpdating = False
    Range(Cells(1, 4), Cells(Cells(1, 4).End(xlDown).Row, 4)).Select
    Selection.ClearContents
ii = 1
For i = 1 To Cells(1, 1).End(xlDown).Row
    If Cells(i, 2) = "x" Then
    ii = ii + 1
    Cells(ii, 4) = Cells(i, 1)
    End If
Next i
If Cells(2, 4) <> "" Then
    Cells(1, 4).Select
    Selection.AutoFilter
    Range(Cells(2, 4), Cells(Cells(1, 4).End(xlDown).Row, 4)).Sort Key1:=Range("D2"), Order1:= _
xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Selection.AutoFilter
    Selection.Delete shift:=xlUp
     For a = Cells(1, 4).End(xlDown).Row To 2 Step -1
        
        If Cells(a, 4) = Cells(a - 1, 4) Then
        Cells(a, 4).Select
        Selection.Delete shift:=xlUp
        End If
    Next a
End If

        Application.ScreenUpdating = True
 End If
End Sub



  

Betrifft: mit einem Autofilter.... von: Björn B.
Geschrieben am: 13.01.2010 13:10:25

Hallo,

... mit einem Autofilter auf Spalte B, dann als Eintrag "x" und schon werden alle anderen ausgeblendet.

Das Ergebnis kannst du kopieren und "Inhalte einfügen - nur Werte", dann werden die ausgeblendeten nicht mitkopiert.

Gruß
Björn B.


  

Betrifft: ganz einfach.. von: Björn B.
Geschrieben am: 13.01.2010 13:42:38

Hallo,

hab noch mal ne neue Idee.
Über eine Hilfsspalte, z.B. Spalte C.
Die Formel funktioniert bis Zeile 1000, das kannst du aber anpassen.
=INDEX(A:A;KKLEINSTE(WENN(B$1:B$1000="x";ZEILE($1:$1000));ZEILE(A1)))

Diese Formel muss als Matrix-Formel eingegeben werden.
Also nicht mit Enter bestätigen, sondern mit Strg+Shift+Enter, danach sollten geschweifte Klammern um die Formel sein. {}

Diese Formel dann in Spalte C nach unten kopieren.
Einfach mal testen, wenn in B ein X steht, dann wird der Name aus A in C angezeigt.

Gruß
Björn B.


Beiträge aus den Excel-Beispielen zum Thema "Namenvergabe bedingt"