Office: (Office 2019) Spalten anand der Überschriften ansprechen(ein/ausblenden)

Helfe beim Thema Spalten anand der Überschriften ansprechen(ein/ausblenden) in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Leute, ich habe eine TB in der ich meine Daten mit hilfe einer Case Funktion ein und ausblende. In der Case Funktion habe ich die Spalten über... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Creator-X, 8. November 2022.

  1. Spalten anand der Überschriften ansprechen(ein/ausblenden)


    Hallo Leute,
    ich habe eine TB in der ich meine Daten mit hilfe einer Case Funktion ein und ausblende.
    In der Case Funktion habe ich die Spalten über die Spaltennummern definiert.
    Nun bekomme ich aber Daten wo die Spalten nicht immer an der selben Stelle stehen wie ich sie in der Select Case Funktion definiert habe.
    Kann mir jemand sagen wie ich anstelle der Sapltenbuschstaben die Überschriften aus der ersten Zeile als Auswahlkriterium benutzen kann?

    Anbei die TB mit den kommpletten Code. Ober die Schaltfläche im TB1 wird die UF aktiviert.
    Im Modul SW-Finden habe ich schon mal versucht irgendwie umzusetzen. Leider komme ich nicht weiter.

    Gruß CX
     
    Creator-X, 8. November 2022
    #1
  2. Exl121150 Erfahrener User
    Hallo,

    mit folgender Funktion:
    worksheetfunction.match("Time",Range("A1:D1"),0)
    erhältst du den Wert 3 ("Time" steht in der 3. Zelle des Bereiches A1:D1)
    Diese Funktion entspricht der Arbeitsblattfunktion VERGLEICH(...).
     
    Exl121150, 8. November 2022
    #2
  3. Hmmm... Irgendwie kann ich dir nicht ganz folgen wie du das meinst.Spalten anand der Überschriften ansprechen(ein/ausblenden) o_O
     
    Creator-X, 8. November 2022
    #3
  4. Exl121150 Erfahrener User

    Spalten anand der Überschriften ansprechen(ein/ausblenden)

    Hallo,

    deine Frage war ja doch:
    also habe ich dir ein solches Beispiel, das auf deine Datei zutreffen kann, gegeben.
    Im aktiven Arbeitsblatt bezeichnet Range("A1:D1") den Bereich der ersten 4 Zellen in der ersten Zeile, der einen Teil der Überschrift enthält. In C1 steht das Wort "Time". Indem du statt der fixen Spaltenbuchstaben (also C1) nach der Überschriftenzelle mit dem Inhalt "Time" suchst, erhältst du mit der Funktion Worksheetfunction.Match("Time", Range("A1:D1"),0) den Wert 3, weil "Time" in der 3. Zelle des Bereiches steht und somit auch in der 3. Spalte.

    Du wolltest ja die Überschrifteninhalte als Kriterium zur Spaltensuche.
    Außerdem hast du mit folgender Funktion
    Code:
    Function HoleSpalte(wksTab As Worksheet, strTitel As String) As Long
        Dim rngTreffer As Range
    
        Set rngTreffer = wksTab.Rows(1).Find(what:=strTitel, lookat:=xlWhole)
        If Not rngTreffer Is Nothing Then
           HoleSpalte = rngTreffer.Column
        End If
    End Function
    

    ohnehin eine Funktion, die die Spaltennummer der Stringvariablen strTitel aus der 1.Zeile liefert.
    Wenn du folgende SUB in ein allgem.Codemodul einfügst:
    Code:
    '    Case 1: s = "L:N,AD:AD,AX:AX,BD:BD,BF:BF,BR:BR"                         'C-Stahl
    '    case 1: s = "SAMPLE|HEAT|LOT|Mo|Ni|Mn|Cr|Si"
    Sub SpaltenEinblendenDetail(s As String)
       Dim ss, Sp As Long
       For Each ss In Split(s, "|")
         Sp = HoleSpalte(Tabelle1, CStr(ss))
         Tabelle1.Columns(Sp).Hidden = False
       Next ss
    End Sub
    

    und die Select Case WelcherButton-Code-Passage abänderst, indem du statt den bisherigen s die Spaltenüberschriften einsetzt (getrennt durch "|")
    Code:
    Dim s As String
    Select Case WelcherButton
    '    Case 1: s = "L:N,AD:AD,AX:AX,BD:BD,BF:BF,BR:BR"                         'C-Stahl
         Case 1: s = "SAMPLE|HEAT|LOT|Mo|Ni|Mn|Cr|Si"
    '    Case 2: s = "L:N,AD:AD,AF:AF,AX:AX,BD:BD,BF:BF,BJ:BJ,BR:BR"             'austenitische Stähle
        Case 2: s = "SAMPLE|HEAT|LOT|Mo|Mb|Ni|Mn|Cr|Ti|Si"
    '    Case 3: s = "L:N,AD:AD,AF:AF,AV:AV,AZ:AZ,AX:AX,BD:BD,BF:BF,BJ:BJ,BR:BR" 'Alloy
         Case 3: s = "...."
    '    Case 4: s = "L:N,AD:AD,AF:AF,AX:AX,BD:BD,BF:BF,BR:BR"                   'CrNi-Stähle
         Case 4: s = "...."
    '    Case 5: s = "L:N,AD:AD,AF:AF,AX:AX,BD:BD,BF:BF,BH:BH,BR:BR"             'Cr-Stähle
         Case 5: s = "...."
    '    Case 6: s = "L:N,AD:AD,AF:AF,AX:AX,BD:BD,BF:BF,BH:BH,BR:BR"             'Schweißzusatzwerkstoff
         Case 6: s = "...."
        Case 7: Cells.EntireColumn.Hidden = False: Exit Sub                     'alles Einblenden
    End Select
    '
    SpaltenEinblendenDetail s
    

    und nach dem Select die Sub SpaltenEinblendenDetail mit dem Parameter s aufrufst, müsste das Ganze ebenfalls funktionieren. (Die s für Case 3-6 müsstest du noch ergänzen!)
     
    Zuletzt bearbeitet: 9. November 2022
    Exl121150, 9. November 2022
    #4
  5. Hi,
    hab jetzt den Code mal eingefügt. Im Sub SpaltenEinblendenDetail(s As String) läuft er auf Fehler.
    Werd ich mir später noch mal anschauen.
     
    Creator-X, 9. November 2022
    #5
  6. Exl121150 Erfahrener User
    Hallo,

    ich habe nicht bedacht, dass du sämtliche Spalten ausblendest (und erst hinterdrein einige wieder einblendest).
    Hier die korrigierte SUB SpaltenEinblendenDetails(s As String):
    Code:
    Sub SpaltenEinblendenDetail(s As String)
       Dim Sp() As Long, SpTitel() As String, I As Long
      
      'Alle Spalten einblenden
       Tabelle1.Columns.Hidden = False
      'Spaltennummern Sp zu den Spaltentiteln s ermitteln
      'Spaltennummern für nicht vorhandene Spaltentitel erhalten Sp=0
       SpTitel = Split(s, "|")
       ReDim Sp(UBound(SpTitel)) As Long
       For I = 0 To UBound(SpTitel)
         Sp(I) = HoleSpalte(Tabelle1, SpTitel(I))
       Next I
      
      'Spalten A:CC ausblenden
       SpaltenAusblenden
      'Spalten mit den Spaltennummern Sp, sofern sie nicht 0 sind, wieder einblenden
       For I = 0 To UBound(Sp)
         If Sp(I) Then Tabelle1.Columns(Sp(I)).Hidden = False
       Next I
    End Sub
    

    Im Parameter s enthaltene Spaltentitel, die in Zeile 1 von Tabelle1 nicht existieren: Diese Spalten können natürlich auch nicht eingeblendet werden.
     
    Exl121150, 10. November 2022
    #6
  7. Hallo ,
    ja klar, habe die Spalten vorher umbenannt und dann kann der Code die Spalte nicht finden.
    Das habe ich schon abgeändert. Doch ich bekomm beim " alles einblenden" ein Fehler und der Code hängt sich auf. Bin gerade dabei zu schauen woran es liegt.
     
    Creator-X, 10. November 2022
    #7
  8. Exl121150 Erfahrener User

    Spalten anand der Überschriften ansprechen(ein/ausblenden)

    Hallo,

    Falls du damit die Zeile "Tabelle1.Columns.Hidden = False" meinst, kann es nur an der nicht existierenden "Tabelle1" liegen (die du offenbar in der Zwischenzeit umbenannt hast). Besser wäre es, statt dieses internen Blattnamens den Tabulatorblattnamen zu verwenden oder den des aktiven Blattes:
    Set wksTab = ThisWorkbook.Worksheets("PMI Testdatei") '<-- Ändern falls andere Tab-Bezeichnung
    wobei die SUB dann wie folgt aussieht:
    Code:
    Sub SpaltenEinblendenDetail(s As String)
       Dim wksTab As Worksheet
       Dim Sp() As Long, SpTitel() As String, I As Long
      
      'Arbeitsblatt, in dem Spalten ein/aus-geblendet werden sollen:
       Set wksTab = ThisWorkbook.Worksheets("PMI Testdatei") '<-- Ändern falls andere Tab-Bezeichnung
      
      'Alle Spalten einblenden
       wksTab.Columns.Hidden = False
      'Spaltennummern Sp zu den Spaltentiteln s ermitteln
      'Spaltennummern für nicht vorhandene Spaltentitel erhalten Sp=0
       SpTitel = Split(s, "|")
       ReDim Sp(UBound(SpTitel)) As Long
       For I = 0 To UBound(SpTitel)
         Sp(I) = HoleSpalte(wksTab, SpTitel(I))
       Next I
      
      'Spalten A:CC ausblenden
       wksTab.Columns("A:CC").Hidden = True
      'Spalten mit den Spaltennummern Sp, sofern sie nicht 0 sind, wieder einblenden
       For I = 0 To UBound(Sp)
         If Sp(I) Then wksTab.Columns(Sp(I)).Hidden = False
       Next I
    End Sub
    


    Falls du damit eine andere Code-Zeile meinst, müsstest du mir die Zeile mitteilen, an der das Programm hängen bleibt, und mir die Fehlernummer und die Fehlerbeschreibung ebenfalls mitteilen - ansonsten kann ich nämlich nur raten, was du mit dieser dürftigen Fehlerbeschreibung meinst.

    Bei mir funktioniert(e) das Makro einwandfrei, wenn ich auf den Button im Arbeitsblatt "PMI Testdatei" klicke.
     
    Exl121150, 11. November 2022
    #8
  9. Hi, Sorry klar funktioniert dein Code. Spalten anand der Überschriften ansprechen(ein/ausblenden) *:)*
    Ich hatte nur eine Zeile zu viel auskommentiert und deshalb bekam ich nen Fehler.Spalten anand der Überschriften ansprechen(ein/ausblenden) :rolleyes:
    Alles gut .Spalten anand der Überschriften ansprechen(ein/ausblenden) :cool:
     
    Creator-X, 11. November 2022
    #9
  10. Hallo Exl121150,
    wenn ich die Spalte mit "Ltg.Nr" und "Pos.Nr." prüfen will das Ltg.Nr immer vor Pos.Nr. steht sollte es ja ähnlich funktionieren wie mit den Spalten einblenden. Oder?
    Ich müsste doch nur die "SpTitel" dann mit einander vergleichen?
    Quasi:
    Wenn Pos.Nr. vor Ltg.Nr. dann tausche die Spalten sonst mach nichts.

    Kannst du mir noch sagen wie ich die Splits ansprechen kann?

    Gruß CX
     
    Creator-X, 14. November 2022
    #10
  11. Exl121150 Erfahrener User
    Hallo,

    wenn du damit meinst, wie die Split(..)-Funktion definiert ist und was sie macht:
    Split(Ausdruck As String, [Begrenzer], [Limit As Long=-1], [Vergleich As VbCompareMethod = VbBinaryCompare]) As String()
    Gibt ein nullbasiertes eindimensionales Array mit einer bestimmten Anzahl von Teilzeichenfolgen zurück.

    Wenn du im VBA-Editor den Eingabe-Cursor auf das Wort "Split" platzierst und die Taste F1 drückst, erhältst du die Microsoft-Hilfe-Dokumentation zu dieser Funktion und ein Beispiel-Demoprogramm. Das ist identisch mit dem folgenden Link:
    Split-Funktion (Visual Basic for Applications) | Microsoft Learn

    1) Wenn ich dich recht verstanden habe, willst du die beiden Spalten mit Überschrift "Ltg.Nr." (Spalte L=SpaltenNr.12) bzw. "Pos.Nr." (Spalte M=SpaltenNr.13) dann vertauschen, wenn es genau umgekehrt ist, wenn also zB. Spalte "Pos.Nr." in Spalte L liegt und Spalte "Ltg.Nr." in Spalte M.
    2) Du musst aber auch hier wieder so vorgehen: Du musst die SpaltenNr., in der "Ltg.Nr." bzw. "Pos.Nr." liegt, mit der Funktion "HoleSpalte(Arbeitsblatt, Spaltenkopfbeichnung)" ermitteln, die Spaltennummern miteinander vergleichen und, falls Punkt 1) zutrifft, eine Vertauschung der Spalten durchführen.
    3) Wie du die Spaltennummern aus Punkt 2) zwischenspeicherst, um sie dann danach vergleichen zu können (in ein Array wie ich es getan habe mit Sp(I) oder in 2 einzelnen Variablen zB. SpLtg und SpPos), das ist dir überlassen.
     
    Exl121150, 15. November 2022
    #11
  12. Spalten anand der Überschriften ansprechen(ein/ausblenden) :rolleyes:
    Jup so ist es gemeint.Spalten anand der Überschriften ansprechen(ein/ausblenden) *;)*
    Ah. ok, das werd ich dann mal so versuchen.Spalten anand der Überschriften ansprechen(ein/ausblenden) *:)*
     
    Creator-X, 15. November 2022
    #12
  13. Spalten anand der Überschriften ansprechen(ein/ausblenden)

    Hi Exl121150,

    wie schaut es denn aus wenn die beiden Spalten mit Überschrift "Ltg.Nr." (Spalte L=SpaltenNr.12) bzw. "Pos.Nr." (Spalte M=SpaltenNr.13) nicht immer in der Spalte 12 und 13 liegen? Ich hab da aktuell 3 Geräte und bei jeden Gerät ist es anders eingestellt. Deshalb hab ich ja gedacht Mann kann die Spaltenüberschriften so miteinander vergleichen. Wenn ich Sie anhand der Ausgabewerte vergleichen will ist es ja auch nicht richtig. oder ? Kann ja schlecht 1 mit 1 vergleichen.Spalten anand der Überschriften ansprechen(ein/ausblenden) o_O
     
    Creator-X, 24. November 2022
    #13
  14. Exl121150 Erfahrener User
    Hallo,
    ich habe im Folgenden die benutzerdef.Funktion SpaltenTitel_Nr(SpTitelListe As String) As Long() erstellt:
    Code:
    Public Function SpaltenTitel_Nr(SpTitelListe As String) As Long()
       Dim wksTab As Worksheet
       Dim Sp() As Long, SpTitel() As String, I As Long
      
      'Arbeitsblatt, in dem Spalten ein/aus-geblendet werden sollen:
       Set wksTab = ThisWorkbook.Worksheets("PMI Testdatei") '<-- Ändern falls andere Tab-Bezeichnung
      
      'Spaltennummern Sp zu den Spaltentiteln SpTitelListe ermitteln
      'Spaltennummern für nicht vorhandene Spaltentitel erhalten Sp=0
       SpTitel = Split(SpTitelListe, "|")
       ReDim Sp(UBound(SpTitel)) As Long
       For I = 0 To UBound(SpTitel)
         Sp(I) = HoleSpalte(wksTab, SpTitel(I))
       Next I
       SpaltenTitel_Nr = Sp
    End Function
    

    Übergibt man an diese eine Zeichenkette mit Spaltentitelbezeichnungen (getrennt mit "|"), so erhält man ein dynamisches Array mit den dazu gehörigen Spaltennummern zurück.
    Wie diese Funktion zu verwenden ist, zeige ich dir in der folgenden Sub SpaltenNr_Vergleiche() im Detail und mit viel Kommentar:
    Code:
    Public Sub SpaltenNr_Vergleiche()
       Dim TitelTexte As String  'Titelbezeichnungen - getrennt mit "|"
       Dim SpNr() As Long        'Dyn.Array mit den Spaltennummern der Titelbezeichnungen
       Dim I As Long, MsgTxt As String
      
       'Drei Spaltenbezeichnungen werden in "TitelTexte" übergeben an die Funktion "SpaltenTitel_Nr":
       TitelTexte = "Ltg.Nr.|Flags|BATCH"
       SpNr = SpaltenTitel_Nr(TitelTexte)
       'Zu jeder Spaltenbezeichnung wird im dynam.Array SpNr() die entsprechende Spaltennummer gespeichert:
       'Die Spaltennr. für Titel "Ltg.Nr." ist in SpNr(0) enthalten
       'Die Spaltennr. für Titel "Flags"   ist in SpNr(1) enthalten
       'Die Spaltennr. für Titel "BATCH"   ist in SpNr(2) enthalten
       'Für eine nicht vorhandene Spaltenbezeichnung wird in SpNr(...) eine 0 gespeichert.
      
       'Diese (drei) Spaltennummern können zB. mit folgendem Code in einer MessageBox ausgegeben werden:
       MsgTxt = "Die Titeltexte '" & TitelTexte & "' sind " & vbNewLine & "in den Spalten "
       For I = 0 To UBound(SpNr)
         MsgTxt = MsgTxt & SpNr(I) & ", "
       Next I
       MsgBox Prompt:=Left(MsgTxt, Len(MsgTxt) - 2), Title:="Spaltenermittlung"
      
    End Sub
    

    Diese Sub kannst du entweder über die Tastenkombination Alt+F8 aufrufen oder du kannst sie auch mit einem Button im Arbeitsblatt verknüpfen.
    Beides (die Funktion und die Sub) gehören in ein allgemeines Codemodul gespeichert. Voraussetzung ist das Vorhandensein der Funktion "HoleSpalte(..)".
     
    Exl121150, 25. November 2022
    #14
  15. Also wenn ich das jetzt richtig verstanden habe, setze ich da wo die MSGBox -Ausgabe ist mein Vergleich der Spalten ein.
    Ich muss ja die Titel mit den dazugehörigen SpNr(..) aus dem Array vergleichen und wenn z.B. Titel "Ltg-Nr."(mit SpNr.(xx)) größer ist als Titel "Flags-Nr."(mit SpNr.(xx)) dann ist ok, Sonst die beiden Spalten miteinander tauschen.
    Gibt es zu Spalten tauschen eigentlich eine extrige Funktion oder muss man das über "cut" und "insert" dann machen?
     
    Creator-X, 29. November 2022
    #15
Thema:

Spalten anand der Überschriften ansprechen(ein/ausblenden)

Die Seite wird geladen...
  1. Spalten anand der Überschriften ansprechen(ein/ausblenden) - Similar Threads - Spalten anand Überschriften

  2. Benutzerdefinierte Spalte anhand von Bedingungen in Powerquery

    in Microsoft Excel Hilfe
    Benutzerdefinierte Spalte anhand von Bedingungen in Powerquery: Hallo zuammen, ich habe eine Beispieldatei angehängt. Ich habe Rohdaten mit mehreren Spalten. Spalte "Text" ist jedoch unvollständig. Die unvollständigen Zellen möchte ich via Powerquery...
  3. Matrix zeilenweise durchlaufen, Vorhandene Daten in eine Spalte schreiben

    in Microsoft Excel Hilfe
    Matrix zeilenweise durchlaufen, Vorhandene Daten in eine Spalte schreiben: Guten Tag, ich habe eine Datei mit einer 12x340 Matrix diese muss für einen weiteren Arbeitsschritt komplett in eine Spalte umgewandelt werden. Google, Youtube und die Suchfunktion hier konnten...
  4. VBA: Spalten auf anderen Worksheeds in der Mappe ausblenden.

    in Microsoft Excel Hilfe
    VBA: Spalten auf anderen Worksheeds in der Mappe ausblenden.: Hallo zusammen, Eine Tabelle mit 9 Worksheets, Datenblatt, Studien, Studie_1 ...Studie_7. Auf dem Deckblatt werden in Zelle B4-B10 die Namen der Studien eingetragen. Davon abhängig ob ein Name...
  5. Excel VBA Spalten mit Ordnerinhalt vergleichen

    in Microsoft Excel Hilfe
    Excel VBA Spalten mit Ordnerinhalt vergleichen: Hallo, Bin ehr Excel VBA Neuling, Würde aber gerne in einer bestehender Tabelle die Auflistung der Ordner mit dem eigentlichen Stand in den besagten Ordner kontrollieren. Also in der Spalte Q10...
  6. VBA - letzte nicht-leere Spalte

    in Microsoft Excel Hilfe
    VBA - letzte nicht-leere Spalte: Moin, liebe VBA-Spezis, mit Cells(99, Columns.Count).End(xlToLeft).Column bestimme ich die Spaltenzahl der letzten benutzten Zelle in Zeile 99. Soweit, so klar. Nun habe ich aber Formeln in...
  7. (2021) Pivot-Tabelle: mehrere Spalten als eine behandeln

    in Microsoft Excel Hilfe
    (2021) Pivot-Tabelle: mehrere Spalten als eine behandeln: Hallo, ich habe eine Tabelle, die für jeden Monat und für jeden Mitarbeiter Projektdaten enthält. Da diese teils an mehreren Projekten arbeiten, gibt es pro Zeile z.B. die Spalten "Projekt 1" und...
  8. Wenn der Wert größer ist als 10 will ich die Differenz in einer Spalte haben

    in Microsoft Excel Hilfe
    Wenn der Wert größer ist als 10 will ich die Differenz in einer Spalte haben: Hallo zusammen, auf dem Bild im Anhang ist mein Zeiterfassungssystem zusehen. Spalte E ist meine Gesamtstundenzahl, wenn diese Zahl größer ist als 10 möchte ich die Differenz daraus in Spalte I...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden