Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1100to1104
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

Werte mit Schleife verändern

Werte mit Schleife verändern
Mandy
Hi,
ich muss Listen bearbeiten, und dort Werte ändern. Diesen Vorgang wollte ich nun mit einem Makro automatisieren. Vielleicht gehts ja:
Ich habe sowas wie eine Materialliste:
Spalte A = Anzahl
Spalte D = Text
Spalte F = , "Verleih01 - 09", "Miete" , "Verkauf" oder "Kauf"
In der Spalte A stehen also Zahlen drin, das soll jeweils die Anzahl sein. In der Spalte D steht irgend ein Produkt drin und in der Spalte F kann entweder LEER sein oder "Verleih01 - 09", "Miete" , "Verkauf" oder "Kauf" drin stehen.
Ich muss nun alle Datensätze in der Spalte A anschauen, die Grösser "1" sind. Ist dies der Fall muss ich aus dieser Zahl dann eine "1" machen und dann die vorige Anzahl vorangestellt vor meinen Text in die Spalte D schreiben.
Beispiel
Spalte A = 5
Spalte D = "Auto"
dann soll ich in A eine "1" reinschreiben und aus Spalte B wird "5 X Auto"
Ich will also jeden Datensatz in Spalte A auf "1" stehen haben und die Anzahl soll dann in der Spalte D dem dortigen Text mit eine "X" verangestellt werden.
Kann man sowas mit einer Spalte bwältigen ?
Das ganze darf aber nur durchgeführt werden, wenn
SPALTE A > "1" ist, und
SPALTE F entweder mit "V"oder "M" beginnt
Hat da jemand eine Idee, wie man sowas Programmieren könnte ?
Danke mal
Mandy
AW: Werte mit Schleife verändern
11.09.2009 10:13:16
David
Hallo Mandy,
meinst du so?
Tabelle1
 ABCD
15Auto15 x Auto
23Bus13 x Bus
32Flugzeug12 x Flugzeug
41Schiff1Schiff

verwendete Formeln
Zelle Formel
C1 =WENN(A1>1;1;A1)
D1 =WENN(A1>1;A1&" x "&B1;B1)
C2 =WENN(A2>1;1;A2)
D2 =WENN(A2>1;A2&" x "&B2;B2)
C3 =WENN(A3>1;1;A3)
D3 =WENN(A3>1;A3&" x "&B3;B3)
C4 =WENN(A4>1;1;A4)
D4 =WENN(A4>1;A4&" x "&B4;B4)

Tabellendarstellung in Foren Version 4.11


Anschließend könnte man über kopieren und Werte einfügen auch die Originaldaten überschreiben.
Wenn das allerdings eine häufiger vorkommende Tätigkeit ist, und die zusätzlichen Spalten nicht gewünscht sind, empfiehlt sich ein kleiner VBA-Code.
Gruß
David
Anzeige
AW: Werte mit Schleife verändern
11.09.2009 10:20:03
Mandy
Hallo David,
Ja, im Prinzip genau so wie Dein Beispiel. Nur wenn Möglich per Makro, wenn man sowas programmieren kann.
:-)
Gruss
Mandy
AW: Werte mit Schleife verändern
11.09.2009 10:29:50
David
Hallo Mandy.
Option Explicit
Sub umbauen()
Dim i As Long
For i = 1 To Range("A65500").End(xlUp).Row
If Cells(i, 1) > 1 Then
Cells(i, 2) = Cells(i, 1) & " x" & Cells(i, 2)
Cells(i, 1) = 1
End If
Next
End Sub

Rückmeldung wäre nett.
Gruß
David
Danke :-) , noch ne kleine Bitte..
11.09.2009 10:48:24
Mandy
Hi David,
Vielen Dank, das scheint gut zu funktionieren. Noch eine kleine Bitte hätte ich : es sollen aber nur die Zeilen bearbeitet werden, die in der Spalte F entweder mit "V" oder "M" beginnen. Alle anderen sollen übersprungen werden. Sonst Prima :)))) Danke
Dim i As Long
For i = 10 To Range("A1111").End(xlUp).Row
If Cells(i, 1) > 1 Then
Cells(i, 4) = Cells(i, 1) & " X " & Cells(i, 4)
Cells(i, 1) = 1
End If
Anzeige
AW: Danke :-) , noch ne kleine Bitte..
11.09.2009 10:58:22
David
...in der Spalte F entweder mit "V" oder "M" beginnen...
Mit "beginnen" meinst du auch beginnen? D.h. es steht Text/ein Wort drin, welches mit diesem Buchstaben beginnt oder steht NUR der Buchstabe drin?
Gruß
AW: Danke :-) , noch ne kleine Bitte..
11.09.2009 11:03:42
Mandy
HI
es kann zum Beispiel
V01
V02
V03
V11
drin. Es kann aber auch mal
V - Mount
drin steh. Also wirklich nur den ersten Buchstaben anschauen, was dannachkommt ist egal.
Und das für "V" oder "M".
GRuss
Mandy
schon beantwortet
11.09.2009 11:21:11
David
siehe meine andere Antwort...
AW: Danke :-) , noch ne kleine Bitte..
11.09.2009 11:07:21
David
Hallo Mandy,
einfach mal mit beiden Varianten (ist kein großer Unterschied):
Option Explicit
Sub umbauen()
Dim i As Long
Application.ScreenUpdating = False
Application.EnableEvents = False
For i = 1 To Range("A65500").End(xlUp).Row
If Cells(i, 6) = "V" Or Cells(i, 6) = "M" Then  'Variante wenn Zellinhalt = M oder V
'If Left(Cells(i, 6)) = "V" Or Left(Cells(i, 6) = "M") Then  'Variante wenn Zellinhalt mit  _
M oder V BEGINNT
If Cells(i, 1) > 1 Then
Cells(i, 2) = Cells(i, 1) & " x" & Cells(i, 2)
Cells(i, 1) = 1
End If
End If
Next
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Den Bereich innerhalb Range(...) brauchst du nicht anzupassen, der sollte auf 65500 bleiben. Dies bewirkt, dass automatisch die LETZTE belegte Zelle in Spalte A als Endwert genommen wird.
Die Zeilen mit Application... bewirken, dass der Code etwas schneller ausgeführt wird, was sich bei großen Datenmengen durchaus bemerkbar macht.
Gruß
David
Anzeige
AW: Danke :-) , noch ne kleine Bitte..
11.09.2009 11:32:11
Mandy
Hallo David,
Vielen Dank, hast mir sehr geholfen. Hatte anfangs noch eine Fehlermeldung , aber hatte dann das
If Left(Cells(i, 6)
gegen
If Left(Cells(i, 6).Text, 1)
getauscht. hoffe das stimmt. Zumindest Funktioniert es nun. Hatte immer wieder was mit einem falschen Operator gebracht !!!
Das mit der 65500 kannte ich garnicht, ich dachte immer, der läuft da bis Zeile 65500 durch. Dann macht es also wirklich auch nur die Zeilen, die belegt sind ?
Gruss
Mandy
AW: Danke :-) , noch ne kleine Bitte..
11.09.2009 11:39:50
David
Hallo Mandy,
sorry, mein Fehler
If Left(Cells(i, 6).Text, 1)
das Left entspricht der Excel-Formel "Links()", natürlich muss noch angegeben werden, wieviel Zeichen verwendet werden sollen. Das ".Text" kannst du m. E. weglassen, ggf. lieber durch ".Value" ersetzen.
...Das mit der 65500 kannte ich garnicht, ich dachte immer, der läuft da bis Zeile 65500 durch. Dann macht es also wirklich auch nur die Zeilen, die belegt sind ?...
Dies kannst du leicht nachvollziehen, indem du innerhalb deiner Mappe einen Test machst:
- stelle den Cursor auf A65500
- drücke anschließend STRG-OBEN
Die Zeile, in der du damit landest entspricht dem in VBA verwendeten Ausdruck.
Gruss
David
Anzeige
Vielen Dank David, Alles Super :-))) owT
11.09.2009 11:46:04
Mandy

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige