Treffer zählen

Bild

Betrifft: Treffer zählen
von: Milan
Geschrieben am: 28.10.2003 20:13:12

Hallo liebe Excel Helfer,
folgende Aufgabe:

Wie offt befindet sich (Treffer) die Zahlengruppe
von A1 bis C1 in der Zahlengruppe
von H1 bis N10

Im Voraus vielen Dank
Milan

Bild


Betrifft: AW: Treffer zählen
von: PeterW
Geschrieben am: 28.10.2003 20:44:57

Hallo Milan,

meinst du das so?
=ZÄHLENWENN(H1:N10;A1)+ZÄHLENWENN(H1:N10;B1)+ZÄHLENWENN(H1:N10;C1)

Gruß
Peter


Bild


Betrifft: AW: Treffer zählen
von: Milan
Geschrieben am: 28.10.2003 22:39:47

Hallo Peter,
nicht ganz optimal.

Noch genauer die Aufgabe:
A1=1 B1=2 C1=3
In H1 bis N10 sind Zahlenreihen je 7 Zahlen

Wie oft befindet sich die Zahlengruppe (zusammenhängend)1,2,3
im Bereich H1 bis N10.

Danke für die Mühe

Gruß
Milan


Bild


Betrifft: AW: Treffer zählen
von: PeterW
Geschrieben am: 28.10.2003 22:47:46

Hallo Milan,

eine Antwort kann höchstens so optimal sein, wie die Aufgabenstellung. ;-)

Was meinst du jetzt mit zusammenhängend, in einer Zeile? Kann eine Zahl mehrfach vorkommen? Bedenke bitte, dass hier keiner deine Tabelle sehen kann (es sei denn du lädst sie auf den Server).

Gruß
Peter


Bild


Betrifft: AW: Treffer zählen
von: Milan
Geschrieben am: 28.10.2003 23:07:11

Hallo Peter,
habe zwischendurch experimentiert,
und es funktioniert, die Formel kann ich so schön runterziehen.
Übung macht den halben Meister:)


{=SUMME(ZÄHLENWENN(A1:C1;$H$1:$N$10))}

Gruß
Milan


Bild


Betrifft: AW: Treffer zählen
von: Milan
Geschrieben am: 28.10.2003 23:32:23

Hallo Peter,
hilfe die Formel ist richtig, aber.

In Spalte A B C geht es bis 18000 Zeilen
und im Bereich H bis N geht es bis 20000 Zeilen.
So, Excel braucht 15 Minuten bis er bei 5% ist.

Gibt es ein Makro mit dem ich die Werte in Spalte E
hinein bekomme?
Anbei als Anhang meine Problemtabelle.

Gruß
Milan



Bild


Betrifft: wo ist der Anhang?.....
von: PeterW
Geschrieben am: 28.10.2003 23:44:52

... aus dem hoffentlich die genaue Aufgabenstellung ersichtlich wird. :-)


Bild


Betrifft: AW: wo ist der Anhang?.....
von: Milan
Geschrieben am: 28.10.2003 23:54:44

https://www.herber.de/bbs/user/1646.xls


Bild


Betrifft: AW: Treffer zählen
von: PeterW
Geschrieben am: 29.10.2003 01:03:59

Hallo Milan,

ob das mit VBA auf herkömmlichen Rechnern wesentlich schneller geht wage ich zu bezweifeln. Bei 20.000 Zeilen á 7 Werten müssen schon 140.000 Werte verglichen werden, jeweils mit 3 Werten aus den Spalten A bis C, also 420.000 Berechnungen (ohne die Additionen der Treffer) und das dann noch für 18.000 Zeilen der Spalten A bis C ergibt ca. 7,5 Mrd. Berechnungen.

Langer Rede kurzer Sinn: damit dürfte Excel - wenn man das Ergebnis schnell haben will - überfordert sein. Wenn du das Ergebnis benötigst (was dann bestimmt auch noch weiter ausgewertet werden soll) lass den Rechner eine "Nachtschicht" einlegen und schalte unter Extras - Optionen - Berechnen auf Manuell.

Gruß
Peter


Bild


Betrifft: AW: Treffer zählen
von: Reinhard
Geschrieben am: 29.10.2003 02:28:54

Hi Milan,
ich hab mir mit dem ersten Makro (Fuellen) deine tab mal mit 20000 Zeilen nachgestellt.
Ohne Überprüfung ob da Zahlen doppelt sind, denn das spielt ja erstmal keine Rolle, da es um Spalte E geht.

Danach die beiden anderen Makros, die du benutzen kannst, füllen die Spalte E mit den Werten auf, das braucht dann zusammen so 2-4 Minuten. Erst HilfsSpaltenErzeugen aufrufen, dann Spalte-E-füllen aufrufen.
In den Hilfspalten steht drin wie oft die Zahlen 1-49 jeweils im siebenspaltigen Bereich vorkommen.
Gruß
Reinhard


Sub Fuellen()
'ca. 12 Minuten
Application.ScreenUpdating = False
For n = 1 To 20000
Cells(n, 1) = Int(Rnd * 49) + 1
Cells(n, 2) = Int(Rnd * 49) + 1
Cells(n, 3) = Int(Rnd * 49) + 1
Cells(n, 8) = Int(Rnd * 49) + 1
Cells(n, 9) = Int(Rnd * 49) + 1
Cells(n, 10) = Int(Rnd * 49) + 1
Cells(n, 11) = Int(Rnd * 49) + 1
Cells(n, 12) = Int(Rnd * 49) + 1
Cells(n, 13) = Int(Rnd * 49) + 1
Cells(n, 14) = Int(Rnd * 49) + 1
Next n
Application.ScreenUpdating = True
End Sub



Sub HilfsspaltenErzeugen()
' ca 2 Minuten
Application.ScreenUpdating = False
'Dim z(49) As Long
    For n = 1 To 49
        Cells(n, 20) = n
        Zähler = 0
        With Range(Cells(1, 8), Cells(20000, 14))
            Set ze = .Find(What:=n, LookAt:=xlWhole, MatchCase:=True)
            If Not ze Is Nothing Then
                Adresse = ze.Address
                Do
                    Zähler = Zähler + 1
                    Set ze = .FindNext(ze)
                Loop While Not ze Is Nothing And ze.Address <> Adresse
            End If
            Cells(n, 21) = Zähler
        End With
    Next n
Application.ScreenUpdating = True
End Sub



Sub Spalte_E_Fuellen()
' ca 2 Minuten
Application.ScreenUpdating = False
Dim z(49) As Long
For n = 1 To 49
    z(n) = Cells(n, 21)
Next n
For n = 1 To 20000
    Cells(n, 5) = z(Cells(n, 1).Value) + z(Cells(n, 2).Value) + z(Cells(n, 3).Value)
Next n
Application.ScreenUpdating = True
End Sub



Bild


Betrifft: AW: Treffer zählen
von: IngoG
Geschrieben am: 29.10.2003 00:04:11

Hallo Milan,
IMO ist Peters 1. antwort richtig

einfach

=ZÄHLENWENN($G$1:$M$10;A1)+ZÄHLENWENN($G$1:$M$10;B1)+ZÄHLENWENN($G$1:$M$10;C1)

in die zelle e1 schreiben und runterkopieren.
da es keine Matrixfunktion ist arbeitet sie wahrscheinlich viel schneller

Gruß Ingo


 Bild

Beiträge aus den Excel-Beispielen zum Thema " Treffer zählen"