Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1012to1016
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

function - effektiver (schneller) ?!

function - effektiver (schneller) ?!
13.10.2008 11:46:00
KLE
Hallo zusammen,
im Rahmen verschiedener Auswertungen möchte ich gern eine Funktion als Add-In meinen Kollegen zur Verfügung stellen. Diese soll anhand einer Zahl erkennen, in welche Kategorie sie fällt. Da dies leider bei uns nicht ganz so einfach ist - werden es ca. 25 verschiedene If-Schleifen...
ich habe folgendes bisher mal probiert...

Function Kat(Artikel As Integer) As String
If Artikel = 4078 Then
Kat = "WG"
Else
Kat = "offen"    ' hier kämen dann noch weitere 25-30 Prüfungen...
End If
End Function


...aber allein diese Funktion läuft bereits ca. 20 Sekunden durch bei 25.000 Datensätzen. Nun möchte ich gern wissen - geht es auch schneller ?! Grad wenn ich wie geschrieben ca. 25 verschiedene Prüfungen durchführen muss... ?!
Über jeden Hinweis/Hilfestellung wäre sehr dankbar !
Vielen Dank !
Gruß aus Berlin
Kay

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: function - effektiver (schneller) ?!
13.10.2008 11:49:45
Hajo_Zi
Hallo Kay,
benutze Select Case.
Deine weiteren If sieht man in Deinem Beitrag nicht.

SVerweis?
13.10.2008 13:57:00
Yal
Hallo Kai,
eine Zuordnung von Artikel zu einer Kategorie scheint mir besser mit der Verwendung von SVerweis gelöst.
Auch flexibler und übersichtlicher. Ausserdem 25.000 Datensätze sind fast besser mit einer Datenbank bedient (SVerweis ist die Excel-Version von einem Join unter relationale Datenbanken)
Viel Erfolg
Yal
AW: function - effektiver (schneller) ?!
13.10.2008 16:03:00
KLE
Hallo zusammen,
@ Yal, leider kann ich es nicht per Sverweis machen, da die Liste mehr als 10.000 Positionen hätte und zudem fast täglich aktualisiert werden müsste. War auch mein erster Gedanke war...versucht, hat sich aber als nicht effektiv herausgestellt.
@Hajo, habe es nun mit Select Case gemacht, lässt sich sehr angenehm die Vielfalt einarbeiten. Habe nur eine Frage noch:
Wie kann ich in einer SelectCase - Anweisung 2 Bedingungen prüfen ?!
Es soll A) geprüft werden ob der Artikel in der Warengruppe XYZ ist und wenn, dann ob die Artikelbezeichnung folgenden Term enthält "*post*" ?!
Mein Versuch war folgender:

Function BR(Artikel As Integer, Bezeichnung As String) As String
Select Case Artikel
Case Is = 3022 Or 3023, 3050
Select Case Bezeichnung
Case Is = "*post*"
BR = "Postgruppe"
End Select
BR ="Versandgruppe"
End Select
End Function


Aber irgendwie scheine ich da noch was verkehrt gemacht zu haben ?!
Hilfe ;o)
Gruß und Danke bereits an Alle für Eure Unterstützung !
Kay

Anzeige
AW: function - effektiver (schneller) ?!
13.10.2008 16:24:11
Hajo_Zi
Hallo
Case "A","I"
die Hilfe hilft da auch
Gruß Hajo
AW: function - effektiver (schneller) ?!
13.10.2008 16:47:00
KLE
Hallo hajo,
danke für die schnelle Antwort ! Aber ich glaube ich hatte mich da wohl nicht richtig ausgedrückt.
Mein Problem ist, ich habe Artikel, welche Warengruppen zugeordnet sind und dann anhand der Warengruppen in eine Kategorie gehören. Nun soll anhand der Warengruppe die Kategorie bestimmt werden. Da aber teilweise noch eine "Unterbedingung" dabei ist - komme ich da nicht weiter.
Problem-Bsp.:
Artikel-Liste (Ausgangsbasis)
- Artikel 1, WG 1000, Bezeichnung: Aufkleber Postversand
- Artikel 2, WG 1000, Bezeichnung: Aufkleber Shopversand
- Artikel 3, WG 1010, Bezeichnung: Paketversand
Bedingung für Kategorie:
- Artikel muss aus der WG 1000-1005 oder WG 1010 stammen UND ! in der Artikelbezeichnung
den Teil "post" enthalten, um in die Kategorie A zu gehören.
(Dieser kann zu Beginn, am Ende oder irgendwo in der Mitte vorkommen)
D.h. in meinem Beispiel müsste Artikel 1 & 3 in Kategorie A fallen und B ...halt wo anders.
Das per WG habe ich ja hinbekommen, aber wie kann ich das noch zusätzlich mit der Teilwort "Post" einbinden - als "Verkettete" Prüfung so zu sagen ?! :o)
Vielen Dank und Gruß
Kay
Anzeige
AW: function - effektiver (schneller) ?!
13.10.2008 16:56:00
Yal
Hallo Kay,
ich verstehe nicht ganz: wenn deine SVERWEIS-Referenzliste mehr als 10.000 Einträge haben soll, dann wird dein Select-Case auch diese mehr als 10.000 Einträge haben (es sei denn, es gibt Wertebereich, siehe unten). Es wird gewiss nicht einfacher zu pflegen!
Zu deiner Frage: Case Else

Function BR(Artikel As Integer, Bezeichnung As String) As String
Select Case Artikel
Case 3022, 3023, 3050
Select Case Bezeichnung
Case Is = "*post*": BR = "Postgruppe"
Case Else: BR = "Versandgruppe"
End Select
Case 4000 To 4999: BR = "..." 'Die sogenannte Wertebereich
Case 5000 To 5999: BR = "..."
Case Else: BR = "unbek. BR"
End Select
End Function


Viel Erfolg
Yal

Anzeige
AW: function - effektiver (schneller) ?!
14.10.2008 08:49:32
KLE
Hallo und Guten Morgen,
@Yal: Ja, genau - es sind viele Gruppen von bis...so komme ich auf etwa nur noch 60 unterschiedliche Einzelgruppen und Bereiche...
Zu meiner Frage:
Ich habe z.B. folgende Bezeichnung
Artikel Post 12345 --- und wenn ich jetzt in der Case Bezeichnung nach "*post*" suche,
findet Excel es nicht ! Warum ?! Funktioniert in dieser VBA-Schreibweise das "*" (Sternchen) nicht ?!
Wie kann ich einen bestimmten Textauszug finden für die Case-Schleife ?!
Gruß und vielen dank !
Kay
AW: function - effektiver (schneller) ?!
14.10.2008 15:31:00
Dieter
Hi,
nicht Case sondern If mit dem Operator Like.
mfg Dieter
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige