4k Aufrufe
Gefragt in Tabellenkalkulation von ellapropella Einsteiger_in (69 Punkte)
Hallo,

wer kennt sich mit VBA aus?
Ich möchte folgendes:
Ich habe von verschiedenen Mitarbeitern eine Agenda, die sie abarbeiten müssen und ich wöchentlich nachfrage.
Für jeden Mitarbeiter gibt es eine Exceldatei mit ca. 10 Punkten.
Ich bewerte diese Punkte mit Prioritäten.
Da ich die wichtigsten Ergebnisse an meinen Chef reporten muss möchte ich wissen, wie die Punkte der einzelnen Agenden mit der Priorität "H" für hoch automatisch in eine extra Datei kopiert werden, dass ich die wichtigsten Punkte eben automatisch in einer seperaten Excel-Liste habe. Geht das mit VBA und wenn ja wie.

Vielen Dank!

Ella

15 Antworten

0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi ella :-)

ein ansatz vielleicht ^^

dateien werden geschlossen ausgelesen

liest aus einem angegebene verzeichnis alle dateien mit der angegebenen endung ein

ein array nimmt die zellpositionen auf

ausgabe erolgt in einer zeile

ereignisausschaltung um den atbeitsvorgang zu beschleunigen

gruss nighty


Option Explicit
Sub DateienLesen()
Call EventsOff
Dim DateiName As String, ZellPos As Variant
Dim Lzeile As Long, Lspalte As Long
Dim suche As Range
DateiName = Dir("C:\Temp\" & "*.xls")
Lzeile = 11
Do While DateiName <> ""
If ExecuteExcel4Macro("'C:\Temp\" & "[" & DateiName & "]Tabelle1" & "'!" & Range("E2").Address(, , xlR1C1)) <> 0 Then
Set suche = Range("A1:A" & ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row).Find(ExecuteExcel4Macro("'C:\Temp\" & "[" & DateiName & "]Tabelle1" & "'!" & Range("B2").Address(, , xlR1C1)))
If suche Is Nothing Then
For Each ZellPos In Array("B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10")
Lspalte = Lspalte + 1
Cells(Lzeile, Lspalte) = ExecuteExcel4Macro("'C:\Temp\" & "[" & DateiName & "]Tabelle1" & "'!" & Range("" & ZellPos).Address(, , xlR1C1))
Next ZellPos
Lspalte = 0
Lzeile = Lzeile + 1
End If
End If
DateiName = Dir
Loop
Call EventsOn
End Sub
Public Sub EventsOff()
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
End Sub
Public Sub EventsOn()
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End Sub
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi :-)

dîe findfunction duerfe hier überflüssig sein,sollte auch nur ein ansatz bzw beispiel sein ^^

gruss nighty

p.s.
einarbeitung duerfte leicht sein da es ja ein relativ kurzer code ist
0 Punkte
Beantwortet von ellapropella Einsteiger_in (69 Punkte)
hallo nighty,

vielen dank für die info. ich hätte vielleicht dazu sagen sollen, dass ich überhaupt keine ahnung davon habe. folglich verstehe ich auch nicht was du geschrieben hast. geht das auch in deutsch für nicht-computer-*Z*s?
ich will mir nur meine arbeit erleichtern und hatte gedacht das könnte irgendwie funktionieren.

ella
0 Punkte
Beantwortet von ellapropella Einsteiger_in (69 Punkte)
Beispiel: http://www.file-upload.net/download-3970488/KW-50-MHE.xlsx.html
alle mit H gekennzeichneten Zeilen sollen dann automatisch in eine seperate Excel.
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi ella ^^

nicht lesbar fuer mich,konvertiere die datei in eine vorhergehenden version indem du enrsprechende auswahl beim speichern triffst ^^

gruss nighty
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Ella,

für Dein Vorhaben brauchst Du nach meiner Meinung kein Makro, dafür bietet sich der Spezialfilter an.

Aber Du solltest vorher folgendes dringend abstellen.
- entferne alle Zellverbunde, diese sind bei jeder Auswertung nur hinderlich
- entferne alle unötigen Leerzeilen, jeder Datensatz sollte immer nur aus einer Zeile bestehen.

Gruß
Rainer
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Ella,

habe mal Deine Quelldaten (linke Seite) nach meiner Beschreibung verändert und den Spezialfilter darauf angewendet.
Auf der rechten Seite befindet sich die nach "H" gefilterte Liste, sie könnte auch auf einem seperaten Arbeitsblatt ausgegeben werden.

Beispielmappe

Gruß
Rainer
0 Punkte
Beantwortet von ellapropella Einsteiger_in (69 Punkte)
Hallo Rainer, hallo Nighty,

also hier der Link: http://www.file-upload.net/download-3972585/KW-49-MHE.xls.html

Filtern kann ich doch nur innerhalb der Datei. Oder was meinst Du mit Spezialfilter? Ich möchte ja EINE Exeldatei in der nur die Zeilen erfasst sind, die eine hohe Prio haben und die automatisch aus ALLEN 5 anderen Exceldatein rausgefiltert werden.
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Ella,

vergiss meinen Beitrag.

Ich habe nur Deine Datei betrachtet, ohne die Aussgangsfrage richtig gelesen zu haben.
Das Problem mit dem Leerzeilen und den verbundenen Zellen, solltest Du aber trotzdem beherzigen.

Gruß
Rainer
0 Punkte
Beantwortet von ellapropella Einsteiger_in (69 Punkte)
Kann mir denn da niemand helfen?
...