Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA-Abfrage like / like not

Forumthread: VBA-Abfrage like / like not

VBA-Abfrage like / like not
25.11.2003 22:30:12
Thommy
Hallo Excel-Freaks!!

ich hab folgendes Problem, ich hab eine Tabelle die z.b. wie folgt aussieht:

SpalteA / SpalteB
AIKS / 2
AIGE / 3
AFDE / 4
SIEF / 3
SIKD / 3
..... / ....


so jetzt möchte ich übers VBA rechnen lassen, zähle mir alles zusammen von Spalte B wo in der Spalte A ein 'K' vorkommt mit z.b. folgender Abfrage

If SpalteA Like "*K*" Then Summe = Summe + SpalteB

funktioniert alles super mit meiner Abfrage

Nur mein Problem ist jetzt, welchen Befehl muß ich eingeben,
daß es mir alle Summen von SpalteB zusammenzählt, wo dieses K in
der Spalte A nicht vorkommt???

Hab schon folgende Abfrage probiert:

If SpalteA Like Not "*K*" Then Summe = Summe + SpalteB oder
If Not SpalteA Like "*K*" Then Summe = Summe + SpalteB oder
If SpalteA <> "*K*" Then Summe = Summe + SpalteB

Keines von denen funzt!! Helft mir bitte - wie heißt der
Befehl!!?????

Bedanke mich schon jetzt für Eure Hilfe

Thommy
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-Abfrage like / like not
25.11.2003 22:42:23
K.Rola
Hallo,

If instr(cells(x,y),"K")=0 then

Gruß K.Rola
AW: VBA-Abfrage like / like not
25.11.2003 22:44:33
Reinhard
Hallo Thommy,
probier das Folgende.
Gruß
reinhard


Sub tt()
With Worksheets("Tabelle1")
Summe = 0
For n = 2 To .Range("A65536").End(xlUp).Row '2 da Überschrift in Zeile 1
Summe = Summe - (.Cells(n, 1) Like "*K*") * .Cells(n, 2)
Next n
.Cells(n, 2) = Summe
.Cells(n, 1) = "Summe aller Werte mit *K*"
End With
End Sub

Anzeige
ups, Not K war ja gefragt
25.11.2003 23:07:43
Reinhard
Hallo,
dann halt so:

Sub tt()
With Worksheets("Tabelle1")
Summe = 0
For n = 2 To .Range("A65536").End(xlUp).Row '2 da Überschrift in Zeile 1
Summe = Summe - (Not (.Cells(n, 1) Like "*K*")) * .Cells(n, 2)
Next n
.Cells(n, 2) = Summe
.Cells(n, 1) = "Summe aller Werte ohne *K*"
End With
End Sub

Gruß
Reinhard
Anzeige
AW: VBA-Abfrage like / like not
25.11.2003 22:48:47
Nepumuk
Hallo Thommy,
Like liefer doch True oder False zurück. Die Variante: If Not SpalteA Like "*K*" Then Summe = Summe + SpalteB
muss funktionieren.
Gruß
Nepumuk
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA-Abfrage: Verwendung von Like und Not Like


Schritt-für-Schritt-Anleitung

Um in Excel VBA eine Abfrage durchzuführen, die eine Summe basierend auf einem bestimmten Kriterium berechnet, kannst du die folgende Schritt-für-Schritt-Anleitung nutzen. In diesem Beispiel zählen wir die Werte in Spalte B, wenn in Spalte A der Buchstabe "K" nicht vorkommt.

  1. Öffne Excel und gehe zum VBA-Editor (Alt + F11).
  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject", dann "Einfügen" > "Modul").
  3. Kopiere den folgenden VBA-Code in das Modul:
Sub BerechneSummeOhneK()
    With Worksheets("Tabelle1")
        Dim Summe As Double
        Summe = 0
        For n = 2 To .Range("A65536").End(xlUp).Row '2 da Überschrift in Zeile 1
            If Not (.Cells(n, 1) Like "*K*") Then
                Summe = Summe + .Cells(n, 2)
            End If
        Next n
        .Cells(n, 2) = Summe
        .Cells(n, 1) = "Summe aller Werte ohne *K*"
    End With
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Führe das Makro "BerechneSummeOhneK" aus (Alt + F8 und dann auf "Ausführen" klicken).

Häufige Fehler und Lösungen

  • Problem: Der Code funktioniert nicht, wenn ich If Not SpalteA Like "*K*" benutze.
    Lösung: Stelle sicher, dass du den richtigen Bezug auf die Zellen hast. Der VBA-Befehl sollte If Not (.Cells(n, 1) Like "*K*") sein, um sicherzustellen, dass du den Wert korrekt überprüfst.

  • Problem: Die Summe wird nicht korrekt berechnet.
    Lösung: Überprüfe, ob die Werte in Spalte B tatsächlich numerisch sind. Nicht-numerische Werte verursachen Fehler bei der Berechnung.


Alternative Methoden

Eine alternative Methode zur Berechnung der Summe ohne den Buchstaben "K" in Spalte A ist die Verwendung der Instr-Funktion. Hier ist ein Beispiel:

Sub BerechneSummeOhneK_Instr()
    With Worksheets("Tabelle1")
        Dim Summe As Double
        Summe = 0
        For n = 2 To .Range("A65536").End(xlUp).Row
            If Instr(.Cells(n, 1), "K") = 0 Then
                Summe = Summe + .Cells(n, 2)
            End If
        Next n
        .Cells(n, 2) = Summe
        .Cells(n, 1) = "Summe aller Werte ohne *K*"
    End With
End Sub

Praktische Beispiele

Angenommen, du hast folgende Tabelle:

SpalteA SpalteB
AIKS 2
AIGE 3
AFDE 4
SIEF 3
SIKD 3

Wenn du das Makro ausführst, wird die Summe der Werte in Spalte B, die keinen "K" in Spalte A haben, berechnet. In diesem Fall wäre das Ergebnis 6 (3 + 3).


Tipps für Profis

  • Verwende Option Explicit am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
  • Du kannst die Like-Abfrage auch anpassen, um andere Muster zu suchen. Zum Beispiel If .Cells(n, 1) Like "*A*" würde alle Zellen zählen, die ein "A" enthalten.
  • Nutze die Funktion Debug.Print, um während der Ausführung Werte zu prüfen und sicherzustellen, dass dein Code wie gewünscht arbeitet.

FAQ: Häufige Fragen

1. Wie funktioniert die Like-Abfrage in VBA?
Die Like-Abfrage wird verwendet, um Muster in Text zu überprüfen. Zum Beispiel gibt If SpalteA Like "*K*" True zurück, wenn "K" irgendwo in Spalte A vorkommt.

2. Was ist der Unterschied zwischen Like und Instr?
Like prüft, ob ein bestimmtes Muster in einem String vorhanden ist, während Instr die Position eines Teilstrings in einem String zurückgibt. Wenn Instr 0 zurückgibt, bedeutet das, dass der Teilstring nicht vorhanden ist.

3. Kann ich auch mehrere Bedingungen kombinieren?
Ja, du kannst mehrere Bedingungen kombinieren. Zum Beispiel: If Not (.Cells(n, 1) Like "*K*") And (.Cells(n, 2) > 0) Then prüft, ob "K" nicht vorhanden ist und der Wert in Spalte B größer als 0 ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige