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

Nr. suchen und zugehörigen Wert summieren - VBA

Forumthread: Nr. suchen und zugehörigen Wert summieren - VBA

Nr. suchen und zugehörigen Wert summieren - VBA
25.11.2004 09:09:23
anna
Hallo Leute !
Habe mein Problem schon mal beschrieben und zwar folgendes:
Habe eine Arbeitsmappe mit mehr als 100 sheets.
Ich möchte nun eine Nummer eingeben nach der im jeden sheet gesucht werden soll, diese Nummer kommt nur einmal je sheet vor.
Sobald die Nummer gefunden wurde soll die Zahl die rechts daneben steht summiert (es kann sein das dort keine Zahl steht!!" )werden und zum Schluß soll mir die Summe angezeigt werden.
Habe folgenden Vorschlag von u_ bekommen:

Sub Summe()
Dim sh As Worksheet, sngSum As Single, rngFind As Range, strSuchen As String
strSuchen = InputBox("Nummer?")
If strSuchen = "" Then Exit Sub
For Each sh In Worksheets
Set rngFind =Nothing
Set rngFind = sh.Cells.Find(strSuchen, Cells(1, 1))
If Not rngFind Is Nothing Then sngSum = sngSum + rngFind.Offset(0, 1)
Next sh
MsgBox sngSum
End Sub

Wenn ich diese Makro ausführe bekomme ich hin und wieder die Fehlermeldung ´13.
und folgende Zeile wird makiert:
If Not rngFind Is Nothing Then sngSum = sngSum + rngFind.Offset(0, 1)
Wo kann der Fehler liegen? Vielleicht, weil manchmal in der Spalte recht neben dem gefundenen Wert nicht steht?
Hoffe Ihr könnt mir helfen!!
Gruß
anna
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nr. suchen und zugehörigen Wert summieren - VBA
25.11.2004 09:52:41
Roland
Hallo anna,
der Code ist ok. Den Laufzeitfehler 13 bekommst du, wenn du versuchst, Zahl und Text zu addieren. Prüfe doch einfach mal deine Tabellen, ob eine der zu addierenden Zellen zwar als Zahl erscheint, jedoch als Text formatiert wurde (die vermeintliche "Zahl" erscheint dann linksbündig).
Gruß Roland
Anzeige
AW: Nr. suchen und zugehörigen Wert summieren - VBA
WernerB.
Hallo Anna,
wie gefällt Dir das?

Sub Summe()
Dim sh As Worksheet
Dim rngFind As Range
Dim strSuchen As String
Dim sngSum As Single
strSuchen = InputBox("Nummer?")
If strSuchen = "" Then Exit Sub
For Each sh In Worksheets
Set rngFind = sh.Cells.Find(strSuchen, Cells(1, 1))
If Not rngFind Is Nothing Then
If IsNumeric(rngFind.Offset(0, 1).Value) Then
sngSum = sngSum + rngFind.Offset(0, 1).Value
End If
Set rngFind = Nothing
End If
Next sh
MsgBox sngSum
End Sub

Viel Erfolg wünscht
WernerB.
P.S.: Dieses Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter !
Anzeige
Super, es klappt!! wo lag der Fehler?
25.11.2004 10:23:48
anna
Hallo Werner!
Das klappt wunderbar. Wo lag der Fehler ?
Gruß
Anna
AW: Super, es klappt!! wo lag der Fehler?
WernerB.
Hallo Anna,
der Fehler lag wie so oft einmal mehr nicht im Makro, sondern in der Problembeschreibung, die der Erstellung des Makros vorausging.
Dort hast Du verschwiegen, dass in der Zelle "rechts daneben" auch Text stehen kann.
Der Programmierer ist somit wohl davon ausgegangen, dass in der Zelle "rechts daneben" immer Zahlen stehen.
Excel bzw. VBA kann auch nur Zahlen addieren und nicht Zahlen und Texte.
Wenn z.B. 17 und "Paul" addiert werden sollen, dann kommt es eben zur Fehlermeldung.
In das Programm habe ich nun eine Kontrollfunktion eingebaut, die überprüft, ob der Inhalt der Zelle "rechts daneben" numerisch ist; nur dann wird auch addiert.
Gruß
WernerB.
Anzeige
Danke für Deine Antwort! :-)
25.11.2004 11:31:16
anna
.
Anzeige
Anzeige

Infobox / Tutorial

Nr. suchen und zugehörigen Wert summieren mit VBA


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und lade die Arbeitsmappe, in der Du die Nummer suchen möchtest.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu: Klicke im Menü auf Einfügen und wähle Modul.

  4. Kopiere den folgenden VBA-Code in das Modul:

    Sub Summe()
       Dim sh As Worksheet
       Dim rngFind As Range
       Dim strSuchen As String
       Dim sngSum As Single
       strSuchen = InputBox("Nummer?")
       If strSuchen = "" Then Exit Sub
       For Each sh In Worksheets
           Set rngFind = sh.Cells.Find(strSuchen, Cells(1, 1))
           If Not rngFind Is Nothing Then
               If IsNumeric(rngFind.Offset(0, 1).Value) Then
                   sngSum = sngSum + rngFind.Offset(0, 1).Value
               End If
           End If
       Next sh
       MsgBox sngSum
    End Sub
  5. Schließe den VBA-Editor und gehe zurück zu Excel.

  6. Führe das Makro aus: Drücke ALT + F8, wähle Summe und klicke auf Ausführen.

  7. Gib die gewünschte Nummer ein, und das Makro wird die zugehörigen Werte summieren und das Ergebnis in einer MessageBox anzeigen.


Häufige Fehler und Lösungen

  • Fehler 13: Typen unverträglich: Dieser Fehler tritt auf, wenn Du versuchst, Zahlen und Texte zu addieren. Stelle sicher, dass die Zelle rechts von der gefundenen Nummer tatsächlich eine Zahl enthält. Der modifizierte Code von WernerB. prüft dies mit IsNumeric.

  • Nummer nicht gefunden: Wenn das gesuchte Element nicht in einem der Blätter vorhanden ist, wird 0 als Summe angezeigt. Achte darauf, dass die Suchnummer korrekt eingegeben wurde.


Alternative Methoden

Eine Alternative zur Verwendung von VBA ist die Verwendung von Excel-Formeln. Wenn Du in einem einzelnen Arbeitsblatt nach einer Nummer suchen und deren zugehörigen Wert summieren möchtest, kannst Du die SUMMEWENN-Funktion verwenden:

=SUMMEWENN(A:A, "Suchnummer", B:B)

Hierbei ist A:A der Bereich, in dem Du nach der Nummer suchst, und B:B der Bereich, aus dem die Werte summiert werden.


Praktische Beispiele

Angenommen, Du hast in verschiedenen Arbeitsblättern die folgende Struktur:

A B
1 10
2 20
3 30

Wenn Du die Nummer 2 suchst, wird das Makro die Zahl 20 summieren, auch wenn in einer anderen Zelle kein Wert vorhanden ist.


Tipps für Profis

  • Erweiterung des Codes: Du kannst den Code erweitern, um mehrere Suchbedingungen oder Bereiche zu berücksichtigen.
  • Fehlermeldungen: Implementiere eigene Fehlermeldungen, um den Benutzer über das Ergebnis der Suche zu informieren.
  • Verwendung von VLOOKUP: Wenn Du eine ähnliche Funktionalität mit VLOOKUP benötigst, kannst Du auch die Formel =VLOOKUP(Suchnummer, Tabelle, Spalte, FALSE) verwenden, um den entsprechenden Wert zu finden.

FAQ: Häufige Fragen

1. Wie kann ich den Code anpassen, um mehrere Werte zu summieren?
Du kannst eine Schleife verwenden, um mehrere Suchnummern zu verarbeiten oder ein Array für die Suchnummern zu definieren.

2. Funktioniert dieser Code in Excel 365?
Ja, der VBA-Code funktioniert in Excel 365 sowie in älteren Versionen von Excel, die VBA unterstützen. Achte darauf, die Makros in den Excel-Einstellungen zu aktivieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige