Excel doppelte Werte finden in multiplen Spalten

Hallo zusammen,

ähnliche Fragen habe ich hier schon gefunden, aber keine der Antworten hilft mir bei meinem Problem weiter.

Ich habe eine Exceltabelle mit ca. 1.000 Spalten und ca. 1.000 Zeilen, in denen Zahlen stehen. Ich will herausfinden, welche dieser Zahlen mehrmals vorkommt. Und das nicht spaltenbezogen, sondern global.

Bei 1.000.000 Rechenschritten nippelt mir Excel mit Zählenwenn ab. Vielleicht hat ja jemand eine Idee. Gerne auch VBA.

Danke im voraus.

Hall Agapyr,

Bei 1.000.000 Rechenschritten nippelt mir Excel mit Zählenwenn
ab.

jeder erlebt (oder wird das erleben) Abnippeln unterschiedlich.
Geht das auch genauer?
Meldet sich Win und zeigt an daß Excel beendet werden mußte und fragt dich ob du einen Problembericht zu MS schicken willst?
Oder kommt eine Excelmeldung über zuwenig virtuellem Speicher?
Oder, oder?

Grundsätzlich klappt diese Formel:

=ZÄHLENWENN(Tabelle2!1:1048576;5)

Und da geht es um 17 * 10^9 Zellen.
ALLEIN an der schieren Größe liegt es also nicht.

Vielleicht hat ja jemand eine Idee. Gerne auch VBA.

Mit Vba sehe ich jetzt erstmal kritisch. Sicher kann man da in einer Schleife alle 1 Mio Zellen durchlaufen und einzeln überprüfen aber das daaaaaaauuuuuuuert, Excelfunktionen sind da zigmal schneller.

Ich würde also an deiner Stelle ausloten bei 1000 Spalten a 1000 Zeilen, wieviele Spalten a 1000 Zeilen Excel noch auswerten kann ohne daß es Probleme gibt.

Dann könnte man mit Excel oder Vba halt den gesamten benutzten Zellenblock in Einzelblöcke unterteilen und diese einzeln mit Zählenwenn überprüfen und das Egebnis addieren.

Aber vielleicht hängt es an anderen Dingen, k.A.

Gruß
Reinhard

Hallo Reinhard,

ich gebe zu, dass ich mich da ein bisschen unpräzise ausgrdrückt habe.

Also…Ich habe eine Exceltabelle mit 1000 Zeilen und 1000 Spalten, die alle Zahlen enthalten = 1.000.000 Datensätze.

Für jeden dieser 1.000.000 Datensätze will ich wissen, wie oft es in der Gesamtheit der Datensätze vorkommt.

Dazu habe ich in einem anderen Tabellenblatt die Formel

=WENN(‚Blatt1‘!A10;ZÄHLENWENN(’^Blatt1’!$A$1:blush:ALL$1000;‚Blatt1‘!A1);"")

Diese Formel kopiere ich dann in die entsprechenden 1.000.000 Felder der Tabelle, um für jeden Wert in Blatt1 die entsprechende Anzahl Datensätze zu bekommen.

Die Begrenzung liegt hier wahrscheinlich in meinen Systemressourcen. Bei meinen Tests war Excel bei der Berechnung des kompletten Blattes nach 2 Std. noch bei 0%. Tests mit weniger Zeilen hat ergeben, dass mein System hier ca. 4 Zeilen/Minute schaffen müsste = 250 Minuten. Für diesen Zeitraum kann ich den PC nicht einfach stehen und rechnen lassen. Vor allen, da ich in regelmäßigen Abständen die Berechnung der nächsten Zeilen starten müsste, was allein schon zu zusätzlichen Verzögerungen führen würde.

Meine Überlegung die Tabelle nach Access zu transportieren und mir dort eine andere Lösung zu bauen scheitert schon allein an der Begrenzung auf 255 Spalten.

Also…Ich habe eine Exceltabelle mit 1000 Zeilen und 1000
Spalten, die alle Zahlen enthalten = 1.000.000 Datensätze.
=WENN(‚Blatt1‘!A10;ZÄHLENWENN(’^Blatt1’!$A$1:blush:ALL$1000;‚Blatt
1‘!A1);"")

Diese Formel kopiere ich dann in die entsprechenden 1.000.000
Felder der Tabelle, um für jeden Wert in Blatt1 die
entsprechende Anzahl Datensätze zu bekommen.

ca. 4 Zeilen/Minute schaffen müsste = 250 Minuten. Für diesen

Hallo Agapyr,

ich kann diese 250 Minuten nicht bestätigen, solange dauert es bei mir dann doch nicht.
Muß jetzt gleich weg. Anbei ein Ansatz die Formeln in Tabelle2 einzutragen.
Bei der formel ist noch ein Fehler drin, hab jetzt leider keine zeit dafür, vielelicht siehst du ihn.

Achja, soweit war ich vorhin schon, wenn der Code klappt steht in zelle nur die Formel „=XXX“, berechnet wird bislang erst nach F2 pro zelle.

Gruß
Reinhard

Sub Zaehlen()
Dim Ber(1 To 1000, 1 To 1000) As String, a As Integer, b As Integer
Dim T As Single, Formel As String
T = Timer
Formel = "=IF(Tabelle1!RC0,COUNTIF(Tabelle1!R1C1:R1000C1000,Tabelle1!RC),"""")"
ActiveWorkbook.Names.Add Name:="XXX", RefersToR1C1:=Formel
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Worksheets("Tabelle2").UsedRange.ClearContents
For a = 1 To 1000
 For b = 1 To 1000
 Ber(a, b) = "=XXX"
 Next b
Next a
Worksheets("Tabelle2").Range("A1:ALL1000") = Ber
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
MsgBox Timer - T
End Sub

Meine Überlegung die Tabelle nach Access zu transportieren und
mir dort eine andere Lösung zu bauen scheitert schon allein an
der Begrenzung auf 255 Spalten.

Hallo Agapyr,

soll das bedeuten Access erlaubt nur 255 Spalten?
Um welche Version geht es denn?

Gruß
Reinhard, Access-DAU