Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

VBA Auswertung: Problem mit Kriterien

Frage Microsoft Microsoft Office

Mitglied: Forencamper

Forencamper (Level 1) - Jetzt verbinden

04.12.2006, aktualisiert 05.12.2006, 5398 Aufrufe, 9 Kommentare

[Edit Biber] Den gelösten Beitrag geschlossen und von Entwicklung nach Excel verschoben [/Edit]

Guten Morgen @all!

Ich habe folgendes Problem:
Ich habe eine Tabelle in der ich bestimmte Vorgänge
erfasse.
Die Vorgänge haben ein Start und ein Enddatum (tt.mm.jjjj).
Jetzt möchte ich über eine Form (in die ich dann textboxen einbaue) bestimmte Vorgänge anzeigen und auswerten, die in einen bestimmten Zeitraum fallen.

Bsp.
Ich will alle Vorgänge vom 01.01.2006 bis 01.04.2006
Ich gebe dies also in Meine Form ein (als Start und Enddatum).

Wie filtere ich das jetzt in der Tabelle?
Müsste so eine Art "between" sein?!?

Nach dem filtern benötige ich die Vorgänge dann
in einer Variablen, da ich die Vorgänge des bestimmten
Zeitraumes dann in ein anderes Tabellenblatt kopiere.

Kann mir vielleicht jemand helfen?

Vielen Dank im Voraus,

Mit freundlichen Grüßen

Forencamper
Mitglied: 14695
04.12.2006 um 13:20 Uhr
Hoi!

Was heißt Tabelle, sind wir in Excel oder in Word oder... oder hast du es gar mit einem OLE zu tun?

Grüße aus Köln
Oli
Bitte warten ..
Mitglied: Dogbert
04.12.2006 um 19:43 Uhr
Servus Forencamper,

falls es sich um ein annähernd TSQL fähiges Format handelt (-> Access?) geht's einfach mit 'SELECT [Wasauchimmer] FROM [Tabelle] WHERE Date>[Startdatum] AND date<[Enddatum]'.

Gruß
Dogbert
Bitte warten ..
Mitglied: Stefan764
04.12.2006 um 21:19 Uhr
Hallo,

Wenn es sich um Excel handeln sollte, würde ich das z.B. so machen :

01.
Sub Schaltfläche1_BeiKlick() 
02.
 
03.
Start = DateValue("16.08.2003") 
04.
Ende = DateValue("28.09.2005") 
05.
 
06.
ZielZ = 1 
07.
For QuellZ = 1 To 32767 
08.
  If (Tabelle1.Cells(QuellZ, 1) > Start) And (Tabelle1.Cells(QuellZ, 1) < Ende) Then 
09.
     Tabelle2.Cells(ZielZ, 1) = Tabelle1.Cells(QuellZ, 1) 
10.
     Tabelle2.Cells(ZielZ, 2) = Tabelle1.Cells(QuellZ, 2) 
11.
     Tabelle2.Cells(ZielZ, 3) = Tabelle1.Cells(QuellZ, 3) 
12.
     Tabelle2.Cells(ZielZ, 4) = Tabelle1.Cells(QuellZ, 4) 
13.
     Tabelle2.Cells(ZielZ, 5) = Tabelle1.Cells(QuellZ, 5) 
14.
     ZielZ = ZielZ + 1 
15.
  End If 
16.
Next 
17.
 
18.
End Sub
Mit freundlichen Grüßen
Stefan
Bitte warten ..
Mitglied: Biber
04.12.2006 um 23:28 Uhr
@Stefan764,

nicht reizlos, Deine Strategie, aber...

Änderungsvorschlag 1)
Bei diesem neumodischeren Excel-Krams so seit Windows 3.1 kann doch Excel schon bis 65536 Zeilen zählen AFAIK?

Änderungsvorschlag 2)
Da das aber stinkelangsam werden würde (auf meinen ollen Rechnern zumindest),
würde ich mich doch mit dem Durchwackeln der benutzten und nicht der auf der weiten Welt nutzbaren Zeilen zufrieden geben:
01.
Sub Schaltfläche1_BeiKlick() 
02.
.... 
03.
QuellTabelleLastRow=Tabelle1.Cells(65536, 1).End(xlUp).Row  
04.
'<i>eigentlich</i> ...Tabelle1.Cells(Rows.Count, 1) ... und die "1" bedeutet: in Spalte A. 
05.
' natürlich unterstellt, dass keine der Spalten B....E in "tieferen" Zeilen gefüllt ist,  
06.
' während Spalte A (schon) leer ist. 
07.
 
08.
For QuellZ = 1 To QuellTabelleLastRow 
09.
  .... 
10.
 
11.
Next 
12.
... 
13.
End Sub
Laienhafte Frage 3) von mir:
Arbeitet Excel nicht durch Setzen und Anwenden eines "Filters" (über VBA natürlich) schneller als bei dem Versuch, die Schleifen zu Fuß nachzubilden?
[Ist wirklich als Frage gemeint - ich bin in Excel auch eher Noob.]

Grüße
Biber
Bitte warten ..
Mitglied: Dogbert
05.12.2006 um 00:26 Uhr
Nochmals Servus,

in Bezug auf Excel hat ja biber eh schon den richtigen Ansatz mit den Filtern.
Also am besten einfach mal den Makrorekorder anschmeissen und auf einen Teilbereich die 2 verkettetten Filter (>Startdatum UND <Enddatum) anwenden. Danach dürfte ziemlich leicht zu finden sein wo die Extremwerte durch die Textboxeingabe und die Range-Auswahl durch eine Colum-Auswahl ersetzt werden müssen.
Hab's mit Open-Office ausprobiert, da geht's (dat kann aber kein VBA) - Excel benutze ich nur auf Arbeit.

Gruß
Dogbert
Bitte warten ..
Mitglied: Forencamper
05.12.2006 um 08:49 Uhr
Ist eine Excel Tabelle...
ich probier´s mal kurz aus...
Bitte warten ..
Mitglied: Stefan764
05.12.2006 um 12:37 Uhr
@Stefan764,

nicht reizlos, Deine Strategie, aber...

Änderungsvorschlag 1)
Bei diesem neumodischeren Excel-Krams so
seit Windows 3.1 kann doch Excel schon bis
65536 Zeilen zählen AFAIK?

Stimmt, ist mir noch gar nicht aufgefallen (meine Tabellen sind immer kleiner...)


Änderungsvorschlag 2)
Da das aber stinkelangsam werden würde
(auf meinen ollen Rechnern zumindest),
würde ich mich doch mit dem
Durchwackeln der benutzten
und nicht der auf der weiten Welt
nutzbaren Zeilen zufrieden
geben:
01.
Sub 
02.
> Schaltfläche1_BeiKlick() 
03.
> .... 
04.
> QuellTabelleLastRow=Tabelle1.Cells(65536, 
05.
> 1).End(xlUp).Row  
06.
> '<i>eigentlich</i> 
07.
> ...Tabelle1.Cells(Rows.Count, 1) ... und die 
08.
> "1" bedeutet: in Spalte A. 
09.
> ' natürlich unterstellt, dass keine der 
10.
> Spalten B....E in "tieferen" Zeilen 
11.
> gefüllt ist,  
12.
> ' während Spalte A (schon) leer ist. 
13.
>  
14.
> For QuellZ = 1 To QuellTabelleLastRow 
15.
>   .... 
16.
>  
17.
> Next 
18.
> ... 
19.
> End Sub 
20.
> 

Gute Idee !


Laienhafte Frage 3) von mir:
Arbeitet Excel nicht durch Setzen und
Anwenden eines "Filters" (über
VBA natürlich) schneller als bei dem
Versuch, die Schleifen zu Fuß
nachzubilden?

Auch das stimmt - High-Level-Funktionen wie Filter sind natürlich wesentlich schneller, da sie in einer besseren Programmiersprache (warscheinlich C) geschrieben sind.
ABER: Eine Filterfunktion, die GENAU das macht, was ich will, kenne ich nicht.
UND: Wenn das Programm einmal die Woche 10 Sekunden Rechenzeit verschwendet, dann kann ich damit leben. (und ich denke Forencamper kann das auch)

[Ist wirklich als Frage gemeint - ich bin in
Excel auch eher Noob.]

Kein Problem : Ich auch , mein Kerngebiet ist die Automatisierungstechnik.

Grüße
Biber

Grüße
Stefan
Bitte warten ..
Mitglied: Biber
05.12.2006 um 13:40 Uhr
@Stefan764
...mein Kerngebiet ist die Automatisierungstechnik..
Meines auch... im weitesten Sinne

Gruß
Biber
Bitte warten ..
Mitglied: Forencamper
05.12.2006 um 13:46 Uhr
passt!

Vielen Dank nochmals!^^
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Windows 10
Problem: einzige Konto gesperrt + Bitlocker aktiv (11)

Frage von Windows11 zum Thema Windows 10 ...

Exchange Server
Problem mit POP3-Abruf eines Exchange-2013-Postfachs

Frage von YotYot zum Thema Exchange Server ...

VB for Applications
Excel VBA Sortierung von Daten (5)

Frage von easy4breezy zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (32)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...