VBA – die meistgelesenen Beiträge

Am Verzweifeln: Excel Filter automatisch aktualisieren?

Hallo liebe Community,

ich weiß, es gibt mehrere Leute, die diese Frage schon gestellt haben, aber ich bekomme es einfach nicht hin. Vielleicht habe ich auch nur gerade eine Denk(Dummheits)Blockade, versuche das seit ca 2 Stunden zu realisieren.

Ich habe eine Tabelle mit diversen Daten und ein (Balken)Diagramm, welches für jede weitere Zeile in der Tabelle einen neuen Balken hinzufügen sollte. Das ist an sich nicht schwer, aber ich möchte, solange noch keine Daten vorhanden sind, keine leeren Stellen im Diagramm... (siehe: https://gyazo.com/346a1e059ea781ea82d471505856904a) ...und das kriege ich nicht hin.

Ich habe eine Hilfstabelle gemacht und einen Filter darüber gelegt, dass alle leeren ("") Zellen ausgeblendet werden, das funktioniert auch soweit im Diagramm, aber ich muss nach jedem Eintrag in die eigentliche Tabelle wieder den Filter von Hand aktualisieren und das ist ärgerlich.

Ich hoffe ihr könnt mir helfen, sonst sehe ich schwarz für meinen PC und mein Fenster (und eventuelle Fußgänger). Erklärt es am besten so, wie ihr es einem 6 Jährigen erklären würdet. :)

Grüße Tuesday

/ps: Was ich bisher ausgegraben habe und (vermutlich wegen mangelnder - bis nicht existenter - VBA Kenntnis) nicht funktioniert hat:

  • office-loesung.de/ftopic93223_0_0_asc.php
  • office-loesung.de/ftopic60304_0_0_asc.php
  • gutefrage.net/frage/excel-gefilterte-daten-automatisch-aktualisieren
Microsoft Excel, Filter, VBA, Aktualisieren

Excel-Code für Mehrfachauswahl in Dropdown-Listen?

Hallo zusammen,

Ich versuche gerade ein Excel-Dokument zu erstellen, bei dem eine Mehrfachauswahl aus Dropdown-Listen möglich ist. Das heißt aus einer Liste sollte es möglich sein mehrere Werte anzuwählen. Das habe ich auch mit dem untenstehenden VisualBasic-Code gemeistert. Allerdings habe ich erstens das Problem, dass auch eine Mehrfachauswahl des immer gleichen Wertes möglich ist. Theoretisch könnte also in einer Zelle x-mal derselbe Werte auftauchen. Dies soll natürlich nicht möglich sein. Bei Doppelauswahl desselben Wertes soll dieser aus der Zelle wieder verschwinden.

Mein zweites Problem ist, dass ich bislang nur 2 zwei Dropdown-Listen mit Mehrfachauswahl eingefügt bekomme. Sobald ich eine dritte Spalte versuche zu implementieren, bekomme ich eine Fehlermeldung für meinen Code.

Dadurch, dass ich mich mit dem Ganzen nicht so wirklich auskenne, wäre es sehr nett, wenn mir jemand helfen könnte.

Danke!

 

Bisheriger Code:

 

Private Sub Worksheet_Change(ByVal Target As Range)

** Mehrfachauswahl über DropDown-Liste

'** Einfügen im Code-Container des betreffenden Arbeitsblattes

 

'** Dimensionierung der Variablen

Dim rngDV As Range

Dim wert_old As String

Dim wertnew As String

 

'** Errorhandling

On Error GoTo Errorhandling

 

'** Mehrfachauswahl im definierten Bereich "Abteilungen" und "Themen" (Bsp. J2:J2000, I2:I2000) durchführen

If Not Application.Intersect(Target, Range("J2:J2000", "I2:I2000")) Is Nothing Then

 

 '**Range definieren

 Set rngDV = Target.SpecialCells(xlCellTypeAllValidation)

 If rngDV Is Nothing Then GoTo Errorhandling

  

 '** Prüfen, ob eine gültige Zelle ausgewählt wurde und Werte eintragen

 If Not Application.Intersect(Target, rngDV) Is Nothing Then

   Application.EnableEvents = False

   wertnew = Target.Value

   Application.Undo

   wertold = Target.Value

   Target.Value = wertnew

   If wertold <> "" Then

     If wertnew <> "" Then

       Target.Value = wertold & ", " & wertnew

     End If

   End If

 End If

 Application.EnableEvents = True

End If

 

Errorhandling:

Application.EnableEvents = True

End Sub

Visual Basic, Microsoft Excel, VBA, Dropdownliste

Excel VBA Datenüberprüfung beim Einfügen (Strg+V) von Text in Zelle aufrecht erhalten?

Hallo zusammen,

ich greife gerade im Rahmen eines Projekts per Datenüberprüfung auf eine Auswahl von 6000+ Zellen zu und möchte falls ein Teil, das nicht zu den 6000 gehört eine Fehlermeldung ausgeben. Nun habe ich die Problematik, dass die Zelle mit der Datenüberprüfung eine Eingabezelle sein wird, d. h. der Benutzer wird Werte aus anderen XML Dokumenten hereinkopieren. Dies Formatiert die Zelle aber Standardmäßig um und entfernt die eingerichtete Datenüberprüfung.

Gibt es hier eine einfache Lösung dies zu verhindern? Ich habe es auch schon mit Excel VBA versucht (s. Quelltext) aber hier konnte ich nur die Datenüberprüfung nachdem sie entfernt wurde wieder hinzufügen. Das Problem hierbei ist, dass dem User keine Fehlermeldung angezeigt wird nachdem er den Text in die Zelle kopiert hat.

Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$A$2" Then

With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertWarning, Operator _
        :=xlBetween, Formula1:="='Zuord. Teil-Kart. Datenquelle '!$A$1:$A$6168"
        .IgnoreBlank = True
        .InCellDropdown = False
        .InputTitle = ""
        .ErrorTitle = "Teil nicht verfügbar"
        .InputMessage = ""
        .ErrorMessage = _
        "Teil nicht verfügbar, da:" & Chr(10) & "a) Teil existiert nicht" & Chr(10) & "b) Teil existiert, wird aber nicht in Kartonage verpackt --> Manuelle Frachtberechnung nötig" & Chr(10) & "c) Teil ist neu --> Rückmeldung an *** / ***"
        .ShowInput = True
        .ShowError = True
    End With
End If
Microsoft Excel, VBA

Excel-Tabelle trotz Formeln richtig sortieren?

Hey Leute, ich stehe gerade bei meiner Excel-Tabelle etwas auf dem Schlauch…

Ich habe eine Arbeitsmappe „Funktionsliste“, in der ich arbeite, und eine Arbeitsmappe „Datenbank“, in der alle Bauteile mit entsprechenden Datenpunkten aufgelistet sind.

Nun ist die Mappe „Funktionsliste“ dafür da, dass ich in Spalte B mithilfe einer Dropdown-Liste alle Bauteile auswähle, die ich benötige und die in der Mappe „Datenbank“ eingepflegt sind. Mithilfe der SVERWEIS-Funktion übernehme ich die zum Bauteil dazugehörigen Datenpunkte, die ebenfalls in der „Datenbank“ von Spalte F bis Z eingepflegt sind.

Wenn ich nun in der „Funktionsliste“ in Zelle B9 das Bauteil Reparaturschalter auswähle, werden mir durch die SVERWEISE in den Spalten F bis Z alle Datenpunkte aus der „Datenbank“ übernommen. Mein SVERWEIS sieht dann in Spalte F z.B. folgendermaßen aus: =SVERWEIS(Funktionsliste!$B9;Datenbank!$B$9:G$33;6;FALSCH)

Auf die Weise übernimmt mir die Funktionsliste in Spalte F den Wert aus Spalte G aus der Datenbank, wenn das ausgewählte Bauteil in der Funktionsliste in der angegebenen Matrix in der Datenbank findet.

Wenn ich nun in Zelle B10 beispielsweise einen Drucksensor auswähle und das gleiche nun mit =SVERWEIS(Funktionsliste!$B10;Datenbank!$B$9:G$33;6;FALSCH) in Spalte F angebe, werden mir die Datenpunkte für den Drucksensor übernommen.

Jetzt kommt das Hauptproblem: Wenn ich Spalte B alphabetisch sortieren will, werden die Spalten mit den Datenpunkten nicht automatisch mit sortiert. Stattdessen würde durch die alphabetische Sortierung jetzt der Drucksensor in der B9 stehen und der Reparaturschalter in der B10. In der F9 würde dann aber der SVERWEIS nun den Wert aus der B10 suchen und nicht mehr aus der B9, weil die Formel nicht dynamisch mitgenommen wurde beim Sortieren…

Wie kann ich das Problem lösen? :)

Microsoft, Microsoft Excel, Microsoft Office, VBA, Formel, Tabellenkalkulation, Excel-Formel, Office 365

Excel ZÄHLENWENN mit relativen Bezug auf Zelle oberhalb der aktuellen

Hallo,
Ich habe eine Tabelle, in der ich die erste Spalte auf Duplikate überprüfen möchte.
Dazu sorteiere ich diese Spalte (alles Zahlen) in aufsteigender Reihenfolge und möchte nun die "Zählenwenn"-Funktion verwenden, um die Duplikate zu zählen.
Da die Spalte ja sortiert ist kann ich sicher sein, dass gleiche Zahlen immer übereinander liegen, sodass ich in der "Zählenwenn"-Funktion folgendes haben möchte:

=ZÄHLENWENN(Bereich;Inhalt=Inhalt der Zelle oberhalb)

Die Zählenwennfunktion durchläuft ja alle Zellen im Bereich, weshalb (theoretisch) die Funktion "Adresse()" mit "Zeile()" und "Spalte()" als Parameter die aktuelle Zelle referenzieren/sich darauf beziehen.
Das würde bedeuten, dass ich in der "Zählenwenn"-Funktion als zweiten Parameter eigentlich nur folgendes eingeben müsste:

Adresse(Zeile()-1;Spalte())

Funktioniert nicht.
In einigen Beispielen habe ich gesehen, dass Bezüge auf andere Zellen in der "Zählenwenn"-Funktion mit einem "&" beginnen, also habe ich folgendes versucht:

=ZÄHLENWENN(A2:A3000;&ADRESSE(ZEILE()-1;SPALTE()))

Wieder kein Erfolg.

Deshalb die Frage: Wie kann ich in der "Zählenwenn"-Funktion in Excel mich auf eine Zelle, relativ zur aktuellen beziehen? Das hier genannte Beispiel wird sicher auch anders zu lösen gehen, aber den genannten relativen Bezug (also relativ zur Aktuellen Zelle) könnte man in der Zählenwenn schon öfters brauchen. Danke und lg, Springrbua

Microsoft Excel, Funktion, VBA, Anzahl, Tabelle, zaehlenwenn