So ersetzen Sie eine Array-Excel-Formel durch eine andere reguläre Formel, um lange Rechenzeiten zu vermeiden


0

BEISPIEL

unter Verwendung von Matrixformeln im Bereich (E11: E16) Entsprechend dem obigen Beispiel:

Einzelkunden im Bereich (E2: E7) zählen, die nur die folgenden Kriterien erfüllen:

1- Erworbenes Produkt 1, unabhängig davon, ob andere Produkte gekauft wurden oder nicht

2- Kaufte weniger als 5 Einheiten nach Summe. wenn es wiederholte Kunden gibt

3- Ihre Gebietscodes stimmen mit dem entsprechenden Code im Bereich überein (D11: D16)

Ich verwende die folgende Matrixformel, um in E11 zu sein:

=SUM(IF(FREQUENCY(IF($G$2:$G$7=D11,IF($I$2:$I$7="Product1",IF($J$2:$J$7<5,IF($E$2:$E$7<>"",MATCH($E$2:$E$7,$E$2:$E$7,0))))),ROW($E$2:$E$7)-ROW(G2)+1),1))

Diese Formel funktioniert hervorragend, und wenn Sie sie in einer riesigen Datenbank mit Tonnen von Zeilen und Spalten verwenden, benötigt Excel ungefähr 3 Minuten, um nur eine Zelle zu berechnen

Gibt es eine Möglichkeit, diese Array-Formel in eine reguläre umzuwandeln? Jede Hilfe wird maximal geschätzt. Vielen Dank im Voraus


Das erneute Veröffentlichen auf dieser Site über Stack Overflow wird wahrscheinlich zu denselben Ergebnissen führen wie das häufige Veröffentlichen auf der anderen Site. Du wirst VBA brauchen.
Scott Craner

Ihre # 2-Zeile erscheint unvollständig: "Wenn es wiederholte Kunden gibt"
Mike Honey

Ihr BEISPIEL verwirrt mich - warum wiederholen Sie dieselbe Vorwahl in den Zeilen 15 und 16?
Mike Honey

Das Posten des gleichen Materials an mehreren Standorten im Netzwerk wird im Allgemeinen verpönt. Bitte mach das nicht.
Rahuldottech

Antworten:


0

Ich würde Power Query dafür verwenden. Power Query ist ein kostenloses Add-In von Microsoft für Excel 2010 und 2013 und ist in Excel 2016 in der Multifunktionsleiste "Daten" unter "Get & Transform" integriert.

Ich bin mir Ihrer Definition von "Tonnen" nicht sicher, aber Power Query lässt sich recht komfortabel auf etwa 10 Millionen Eingabezeilen skalieren. Wenn Ihre Datenquelle tatsächlich eine Datenbank ist (z. B. SQL Server, Oracle usw.), verlagert Power Query so viel Arbeit wie möglich in die Datenbank.

Für Ihre Herausforderung würde ich damit beginnen, eine Abfrage mit der Schaltfläche Aus Tabelle zu erstellen , um aus der ersten Tabelle zu lesen, und dann Schließen und Laden / Schließen und Laden bis und dann Nur Verbindung erstellen auswählen . Wenn Ihre Quelldaten tatsächlich aus einer realen Datenbank oder einer anderen Datei stammen, ist es effizienter, Power Query stattdessen direkt auf diese Quelle zu richten.

Dann würde ich die eigentliche Ausgabeabfrage aus der Liste der Vorwahlen im Bereich D11: D16 mit der Schaltfläche Von Tabelle starten .

Ich würde einen Zusammenführungsschritt hinzufügen, um der ersten Abfrage nach Ortsvorwahl beizutreten, und dann alle ihre Spalten erweitern.

Dann würde ich eine bedingte Spalte mit dem Namen Produkt 1 hinzufügen und Folgendes angeben: Wenn (Spalte) Produkt gleich (Wert) Produkt 1 ist, dann (Spalte) Produkt

Dann würde ich eine hinzufügen Gruppe von Schritt Gruppierung auf Postleitzahlen und Kunden , und aggregieren die Summe der Verkäufe und Max von Artikel 1 .

Dann würde ich die Filter Artikel 1 Spalte nur die Zeilen mit einem Wert von „Produkt 1“ ist , dann filtern , um den Verkauf Spalte auf weniger als 5.

Schließlich würde ich eine andere Gruppe von Schritt Gruppierung auf Postleitzahlen und aggregiert den Standard Count .

Standardmäßig liefert Power Query dies in eine neue Tabelle in einer neuen Arbeitsmappe - wahrscheinlich am besten dort, um Konflikte mit anderen Objekten zu vermeiden.

Wenn sich Ihre Quelldaten ändern, aktualisieren Sie einfach die Abfrage, um die Ausgabetabelle neu zu generieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.