Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Zeilen zählen im Excel Makro

110 views
Skip to first unread message

Steffen Rabenstein

unread,
Apr 18, 2005, 7:27:02 AM4/18/05
to
Hallo zusammen,

folgendes Problem:
Ich habe ein Makro aufgezeichnet, das eine csv-Datei mit dem immer gleichen
Feldabfolge in eine Excel-Mappe importiert und hier verschiedene
Formatierungen und Berechnungen vornimmt (alte Inhalte aus der xls werden
vorher gelöscht)

Das Problem ist, dass sich die Zeilenanzahl in den csv-Dateien
unterscheidet. Es könnte sein, dass z.B. heute nur 2 Datensätze, morgen aber
20 importiert werden sollen. Ich will nun in verschiedenen Spalten (z.B.
Spalte G) Berechnungen durchführen, die immer variabel genau so viele Zeilen
berechnen, die in der Ursprungsdatei vorkommen (also aus obigem Beispiel:
G2:G3 oder G2:G21). Die nachfolgenden Zeilen dürfen nicht berührt werden, da
die xls u.a. als Grundlage für einen Word-Serienbrief dient und sonst Word
mehr Briefe druckt als eigentlich Datensätze vorhanden sind.

Ich hoffe, ich habe das Problem verständlich geschildert. Weiß hierfür
jemand eine Lösung?
Vielen Dank im voraus,
Steffen Rabenstein


Alexander Wolff

unread,
Apr 18, 2005, 7:37:40 AM4/18/05
to
Steffen Rabenstein wrote:
> Ich habe ein Makro aufgezeichnet, das eine csv-Datei mit dem immer
> gleichen Feldabfolge in eine Excel-Mappe importiert und hier
> verschiedene Formatierungen und Berechnungen vornimmt (alte Inhalte
> aus der xls werden vorher gelöscht)
>
> Das Problem ist, dass sich die Zeilenanzahl in den csv-Dateien
> unterscheidet. Es könnte sein, dass z.B. heute nur 2 Datensätze,
> morgen aber 20 importiert werden sollen. Ich will nun in
> verschiedenen Spalten (z.B. Spalte G) Berechnungen durchführen, die
> immer variabel genau so viele Zeilen berechnen, die in der
> Ursprungsdatei vorkommen (also aus obigem Beispiel: G2:G3 oder
> G2:G21). Die nachfolgenden Zeilen dürfen nicht berührt werden, da die
> xls u.a. als Grundlage für einen Word-Serienbrief dient und sonst
> Word mehr Briefe druckt als eigentlich Datensätze vorhanden sind.

Das sollte und kann eigentlich nicht sein, denn der Platz am Ziel muß doch
gerade für Datensätze unterschiedlicher Anzahl herhalten. Das nachfolgende
gehört auf ein separates Blatt.

Dann kannst Du auch einfach mit =ANZAHL(A:A)-1 die Anzahl der Sätze
ermitteln und dies in VBA auswerten.
--
Gruss Alexander (WinXP Home - Office 2000 SP3) --5----5----6----5----7-2
MS Outlook-Nutzer fahren gut mit http://jump.to/outlook-quotefix |
OutlookExpress: http://home.in.tum.de/~jain/software/oe-quotefix ______|


Steffen Rabenstein

unread,
Apr 18, 2005, 8:15:04 AM4/18/05
to
> > Das Problem ist, dass sich die Zeilenanzahl in den csv-Dateien
> > unterscheidet. Es könnte sein, dass z.B. heute nur 2 Datensätze,
> > morgen aber 20 importiert werden sollen. Ich will nun in
> > verschiedenen Spalten (z.B. Spalte G) Berechnungen durchführen, die
> > immer variabel genau so viele Zeilen berechnen, die in der
> > Ursprungsdatei vorkommen (also aus obigem Beispiel: G2:G3 oder
> > G2:G21). Die nachfolgenden Zeilen dürfen nicht berührt werden, da die
> > xls u.a. als Grundlage für einen Word-Serienbrief dient und sonst
> > Word mehr Briefe druckt als eigentlich Datensätze vorhanden sind.
>
> Das sollte und kann eigentlich nicht sein, denn der Platz am Ziel muß doch
> gerade für Datensätze unterschiedlicher Anzahl herhalten. Das nachfolgende
> gehört auf ein separates Blatt.
>
> Dann kannst Du auch einfach mit =ANZAHL(A:A)-1 die Anzahl der Sätze
> ermitteln und dies in VBA auswerten.

Ich habe es versucht, mit einer WENN-Abfrage nach dem Muster:
WENN(G="";"";G2*0,16) zu lösen, dann muss ich aber dem Makro sagen, bis zu
welcher Zeile es diese Abfrage machen soll. Wenn ich z.B. G2:G100 vorgebe
(mehr Datensätze sind’s nie), so bleiben zwar im Excel die Zeilen leer, der
Word-Serienbrief erzeugt aber trotzdem jedes Mal 99 Serienbriefe, unabhängig
wie viele Datensätze in der xls tatsächlich vorkommen.

Das mit ANZAHL scheint ein guter Ansatz, doch wie kann ich dem Makro sagen,
dass es nur so viele Zeilen berechnet, wie ANZAHL ausgibt? Bin kein großer
VBA-Profi...

Arvi Laanemets

unread,
Apr 18, 2005, 9:02:55 AM4/18/05
to
Hallo

...
ActiveSheet.UsedRange.Select
ZeilenNummer = Selection.Rows.Count
...

--
When sending mail, use address arvil<at>tarkon.ee
Arvi Laanemets

"Steffen Rabenstein" <SteffenR...@discussions.microsoft.com> wrote in
message news:49987CD5-F5D1-4A5A...@microsoft.com...

Arvi Laanemets

unread,
Apr 18, 2005, 1:18:53 PM4/18/05
to
Hallo


"Steffen Rabenstein" <SteffenR...@discussions.microsoft.com> wrote in

message news:E837C460-7619-492B...@microsoft.com...

Definiere es als eine Name (named range), z.B.
ZeilenAnzahl=ANZAHL(A:A)-1

In VBA kanst du solche Namen dann als [Name] eingreifen, etwas so wie:
...
ZeilenNummer=[ZeilenAnzahl]


Arvi Laanemets


Marco Amistadi

unread,
Apr 18, 2005, 11:22:00 PM4/18/05
to
Hallo Steffen

wenn ich dich richtig verstehe willst du in Zeile 2 anfangen,
Formeln in Spalte 'G' zu schreiben, wenn in Spalte A Daten
stehen.

Versuch es doch mal mit einer Do ... Loop Schleife:

Zeile = 2
With Tabelle1
Do While .Cells(Zeile, 1) <> ""
.Cells(Zeile, 7) = .Cells(Zeile, 7) * 0.16
Zeile = Zeile + 1
Loop
End With

Auch wenn es nur als Denkanstoß nutzt, hoffe ich geholfen
zu haben :)

MfG
Marco

Melanie Breden

unread,
Apr 19, 2005, 2:20:21 AM4/19/05
to
Hallo Steffen ,

Steffen Rabenstein schrieb:


> Ich habe es versucht, mit einer WENN-Abfrage nach dem Muster:
> WENN(G="";"";G2*0,16) zu lösen, dann muss ich aber dem Makro sagen, bis zu
> welcher Zeile es diese Abfrage machen soll. Wenn ich z.B. G2:G100 vorgebe
> (mehr Datensätze sind’s nie), so bleiben zwar im Excel die Zeilen leer, der
> Word-Serienbrief erzeugt aber trotzdem jedes Mal 99 Serienbriefe, unabhängig
> wie viele Datensätze in der xls tatsächlich vorkommen.
>
> Das mit ANZAHL scheint ein guter Ansatz, doch wie kann ich dem Makro sagen,
> dass es nur so viele Zeilen berechnet, wie ANZAHL ausgibt? Bin kein großer
> VBA-Profi...

probiers mal so:

Public Sub MwSt()
With Range("H2:H" & Range("A65536").End(xlUp).Row)
.Select
.FormulaR1C1 = "=RC[-1]*0.16"
.Value = .Value
End With
End Sub

--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#

Melanie Breden

unread,
Apr 19, 2005, 2:25:07 AM4/19/05
to
Hallo Steffen ,

> Steffen Rabenstein schrieb:

die Select Zeile dient nur zur Überprüfung, welcher Bereich
angesprochen wird, sie kann gelöscht werden:

Public Sub MwSt()
With Range("H2:H" & Range("A65536").End(xlUp).Row)

0 new messages