Bereich für Formel ändern, wenn Text gefunden
#1
Guten Morgen,

ich möchte in einer Spalte einen Text suchen und in einer anderen Zelle ausgeben lassen. Wenn der Text gefunden wurde, soll der Rest der Spalte nach dem Aufttreten des Textes durchsucht werden. Dafür müsste ich ja den Bereich ändern, aber ich weiß nicht ob das dynamisch geht. Geht das nur mit VBA oder auch mit normalen Excelformeln?

LG, guine
Top
#2
Hallo guine

Das geht mit dem Spezialfilter.
Artikel bei office.com
Artikel bei online-excel.de
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

[-] Folgende(r) 1 Nutzer sagt Danke an shift-del für diesen Beitrag:
  • guine
Top
#3
Danke Shift-Del für die schnelle Antwort. Ich fürchte, ich war noch gar nicht präzise genug. Ich habe mal ein Beispiel angehängt. 
Ich habe mehrere Spalten mit Text wie im Beispiel und eigentlich möchte ich die Zahlen addieren, die ich in den Spalten finde, aber erst nachdem ein bestimmter Text gefunden wurde, bzw in einem bestimmten Bereich. Ich dachte, wenn ich erst mal weiß, wie ich den Bereich finde, kriege ich den Rest schon hin, aber tatsächlich klappt das mit finden auch nicht so recht Wink

D.h. wenn Text A gefunden wurde, sollen Zahlen, die nach Text B auftauchen addiert werden bis zum nächsten auftauchen von Text A oder bis zum Ende.


Angehängte Dateien
.xls   Beispiel.xls (Größe: 8,66 KB / Downloads: 3)
Top
#4
Hi,

mit deiner Beispieltabelle lässt sich leider nichts anfangen. An was machst du fest, welcher Bereich in Sp. B summiert werden soll. Das kommt nicht rüber. Mal etwas Generelles:

Eine Beispieltabelle soll zwar anonymisiert sein und auch nur wenige Datensätze enthalten. Wichtig ist aber, dass sie vom Aufbau und vom Sinn her dem Original gleicht. Dann lässt sich oftmals schon mit wenigen Worten ableiten, wohin die Reise geht.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top
#5
(26.02.2017, 10:35)guine schrieb: Beispiel.xls Beispiel.xls (Größe: 8,66 KB / Downloads: 1)
Ich erhalte den Hinweis dass Dateiformat und Dateiendung nicht zu einander passen und dass die Datei vielleicht beschädigt ist.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Top
#6
Hi Detlef,

ich habe dieselbe Meldung erhalten und ganz mutig den Vorkoster gespielt. Nach Bestätigung der Meldung wurde die Datei normal geladen und konnte ohne Problem geöffnet werden. Hier mal als Tab.-Ausschnitt:

Tabelle1

ABC
1Text B: 3 kann variierenSumme aller Zahlen bis A2?
2Ein Text enthält den gesuchten Text A irgendwoSumme aller Zahlen von A3 bis A15?
3Text B: 2 kann variierenSumme aller Zahlen ab A17?
4irrelevanter Text
5Text B: 2 kann variieren
6Text B: 5 kann variieren
7Text B: 2 kann variieren
8irrelevanter Txt
9Text B: 2 kann variieren
10Text B: 6 kann variieren
11Text B: 2 kann variieren
12Text B: 2 kann variieren
13Text B: 2 kann variieren
14Text B: 2 kann variieren
15Text B: 2 kann variieren
16Ein weiterer Text enthält den gesuchten Text A irgendwo anders
17Text B: 2 kann variieren
18Text B: 2 kann variieren
19Text B: 8 kann variieren
20Text B: 2 kann variieren
21Text B: 2 kann variieren
22irrelevanter Text
23Text B: 2 kann variieren
24Text B: 2 kann variieren
25Text B: 9 kann variieren
26Text B: 2 kann variieren
27Text B: 2 kann variieren

Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
[-] Folgende(r) 1 Nutzer sagt Danke an WillWissen für diesen Beitrag:
  • guine
Top
#7
Hallo,

wenn ich das richtig verstanden habe dann vielleicht mit dem folgenden VBA-Code der in ein allgemeines Modul der Datei gehört:

Code:
Public Function Summe_Spezial(bereich As Range)
'http://www.office-loesung.de/fpost2164562.php#2164562
Dim L As Long
Dim I As Integer
Dim arr As Variant
Dim Regex As Object
arr = bereich
Set Regex = CreateObject("Vbscript.Regexp")
With Regex
    .Pattern = "(\d+,\d+|\d+)"
    For L = LBound(arr) To UBound(arr)
        For I = LBound(arr, 2) To UBound(arr, 2)
            If Not IsError(arr(L, I)) Then
                If .test(arr(L, I)) Then
                    Summe_Spezial = Summe_Spezial * 1 + .Execute(arr(L, I))(0) * 1
                End If
            End If
        Next
    Next
End With
End Function

Der Aufruf erfolgt dann z.B. in C2 so:

=Summe_Spezial(A1:A2)

- Öffne mit Alt+F11 den VBA-Editor
- mit Strg+R den Projekt-Explorer öffnen und aktivieren
- die gewünschte Datei per Doppelklick markieren
- Tastenkombination Alt+E und dann M drücken
- in der rechten Fensterhälfte ist jetzt ein leeres Modul eingefügt worden
- in dieses Modul muss der Code eingefügt werden
- im Projektexplorer wird das Modul unter der Datei angezeigt
- speichen und den VBA-Editor mit Alt+F4 schliessen
- die Funktion steht dir jetzt in dieser Datei zur Verfügung
Gruß
Peter
Top
#8
Hallo Peter

Also geht es im ersten Schritt darum die Zahlen aus Spalte A zu extrahieren und dann nach dem Kriterium "Text A" die Abschnitte zu bestimmen über die summiert wird.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Top
#9
Ich versuche es zu konkretisieren:

Bisher mach ich das nicht fest, sondern ich sehe ja wann Text A auftaucht, das ist in der zweiten und der 16.Zeile. 

Der Bereich der summiert werden soll ist also:
- der Bereich vor dem ersten Auftreten von Text A in der zweiten Zeile, 
- der Bereich nach dem ersten Auftreten von Text A in der zweiten Zeile bis zum Auftauchen von Text A in der 16. Zeile 
- der Bereich nach dem Auftreten von Text A in der 16. Zeile bis zum Ende

Wobei Text A in anderen Spalten an einer anderen Stelle auftauchen kann.

 

Ich habe keine Ahnung, ob man diesen Bereich ohne VBA dynamisch erkennen lassen kann.

Ist es jetzt verständlicher geworden? 

Ich hatte die Datei umbenannt und da das x am Ende von xlsx weggelassen. Soll ich die nochmal mit der korrekten Endung anhängen?

LG, guine
Top
#10
Hallo Peter,

die Formel ist schon super und löst einen großen Teil meines Problems. 
Aber ich weiß nicht wie ich an eine solche Formel einen Bereich übergeben kann, der sich ändert je nachdem was in der Spalte steht.

LG, guine

Edit: Gibt es eine gute vba Seite, damit ich die Formel verstehen kann? Ich verstehe leider nicht mal den punkt bei .pattern
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste