Excel VBA (absoluter anfänger...)

Rani22

Mitglied
hallo,

im laufe eines projektes muss ich aus einer excel datei zufallswerte eintragen.

dies sieht in etwa wie folgt aus:

attachment.php


wobei die tabelle über mehrere tausend zeilen geht. hier nur zur vereinfachung.

für mich ist es nun wichtig dass immer, wenn z.b. amerika ausgewählt ist ich den wert mit 1,1 multiplizieren muss und immer wenn umsatz als kpi gewählt ist der wert in einem zufallsbereich zwischen 600.000 $ und 900.000 $ liegt.

wie kann ich das am besten realisieren? über makro aufzeichnen geht ja leider nicht.

gibt es dafür möglicherweise einen kurzen VBA code?

wäre echt super wenn ihr mir helfen könntet weil ich echt keine ahnung in VBA hab.

danke schonmal :)
 

Anhänge

  • tabelle.png
    tabelle.png
    41,7 KB · Aufrufe: 120

aze

Bekanntes Mitglied
hi

Ich musste letztens etwas ähnliches machen.Da ich mich mit VBA nicht auskenne habe ich es mit Java und Apache Poi gemacht.Wenn du Interesse hast könnte ichd ir den Code schicken.

Schöne grüße

Aze
 

Michael...

Top Contributor
für mich ist es nun wichtig dass immer, wenn z.b. amerika ausgewählt ist ich den wert mit 1,1 multiplizieren muss und immer wenn umsatz als kpi gewählt ist der wert in einem zufallsbereich zwischen 600.000 $ und 900.000 $ liegt.
Und was ist wenn nicht? In Excel gibt es Formeln Zufall(), Wenn(...

So nebenbei was hat das mit Softwareentwicklung zu tun? Schon mal in einem Excelforum nachgefragt?
 

Rani22

Mitglied
es geht hier ja um programmierung...

ich formuliers mal allgemein...



WENN land = "amerkia" -> dann wert = wert * 1,1;

wenn kpi = "umsatz" -> dann wertebereich = wertebereich zwischen 600.000 und 900.000.

und wie xhelp schon geschrieben hat... hier gehts um vba... also kein java... was aber auch ne programmiersprache is...
 

Rani22

Mitglied
sind zufallsbereiche

wie eben hier bei umsatz zwischen 600k und 900k

die werte müssen neu generiert werden


€dit

ich bräuchte hier wohl ne if abfrage in ner while schleife mit der ich in spalte "ergebnis" den wert ausrechne der sich aus den variablen "kpi" und "land" zusammensetzt...

nur die sytax fehlt mir eben...
 

Michael...

Top Contributor
Hab ich das richtig verstanden: Es soll in obiger Tabelle die Spalte Wert gefüllt werden.
Wenn in Spalte Land "Amerika" dann Wert (welcher Wert) *1,1
Wenn in Spalte KPI "Umsatz" dann Zufallswert zwischen 600k und 900k

Wenn das die Anforderung ist, dann tunt man sich doch mit einer kurzen Formel leichter als sich im VBA sich die Finger wund zu tippen.
Natürlich kann man vieles auch mit VBA lösen:
For-Schleife über einzelne Spalten If Cells(...).Value ="..." Then ...

Bin aber der Meinung, das mit Excel im Allgemeinen und mit VBA viel zu viel gemacht wird. Und da ich in der Vergangenheit schon unzählige VBA "Verbrechen" diverser Praktikanten und Werkstudenten korrigieren und anpassen musste unterstütze ich sowas nur in Ausnahmefällen ;-)
 

Rani22

Mitglied
hi, also der zufallswert soll in E2:Exx geschrieben werden

dieser ist von den KPI abhängig z.b. bei Umsatz ist der mögliche Wertebereich zwischen 600k und 900k. diese zufallszahl soll unter "Wert" eingetragen werden. hierbei wäre wohl ne schleife zwischen E2:Exx nötig.

der zweite schritt wäre... A2:Axx in ner schleife auslesen ob der wert "Amerika" entspricht und wenn die bedingung wahr ist dann (am einfachsten wohl hinter wert) noch ne spalte mit "Faktor" einfügen, in der der faktor dann abgelegt wird.

d.h. wenn in Axx "Amerika steht" in Fxx den Faktor "1,1" hinterlegen.

alles in allem brauch ich eigentlich nur die syntax wie ich prüfen kann ob in Axx "Amerika" steht und wie ich dann in dem neuen Feld den Faktor hinterlegen kann. alles andere kann man dann schon selbst ableiten.

hoff ihr könnt mir helfen.

lg rani
 

Michael...

Top Contributor
hoff ihr könnt mir helfen.
Ich sehe da kein Argument das mit VBA zu lösen, daher gibt's diesbzgl. meinerseits keine Hilfe ;-)

Warum sollte das nicht mit den Excelformeln gelöst werden? Ist ein Aufwand von 1 bis 5 Minuten.

Bsp. Faktor (mal abgesehen davon, ob man den nicht direkt verrechnen sollte statt ihn in einer Spalte anzuzeigen)
Einfach
Code:
=WENN(A2="Amerika";1,1;"")
in die "Faktor" Spalte schreiben und schon hat man innerhalb von 10 sec überall wo in Spalte A "Amerika" steht in Spalte F
Code:
1,1
stehen, in den anderen steht nichts.

Zeitaufwand das in VBA zu machen mit Editor öffnen usw. ca 50 sec ==> Zeitaufwand Faktor 5 ;-)
 

Rani22

Mitglied
Ich sehe da kein Argument das mit VBA zu lösen, daher gibt's diesbzgl. meinerseits keine Hilfe ;-)

Warum sollte das nicht mit den Excelformeln gelöst werden? Ist ein Aufwand von 1 bis 5 Minuten.

Bsp. Faktor (mal abgesehen davon, ob man den nicht direkt verrechnen sollte statt ihn in einer Spalte anzuzeigen)
Einfach
Code:
=WENN(A2="Amerika";1,1;"")
in die "Faktor" Spalte schreiben und schon hat man innerhalb von 10 sec überall wo in Spalte A "Amerika" steht in Spalte F
Code:
1,1
stehen, in den anderen steht nichts.

Zeitaufwand das in VBA zu machen mit Editor öffnen usw. ca 50 sec ==> Zeitaufwand Faktor 5 ;-)

na dann kannst du mir sicher auch erklären wie ich 20 fälle unterscheiden soll aba excel nur 7 fälle in einer wenn funktion zulässt?
 

areafo

Mitglied
Code:
Sub Zufallswerte()
Dim LandZelle As Range
Dim KPIZelle As Range
Dim Wert As Range
Dim rngWert As Range
'Nimmt an das jeder Datensatz ein Land hat und setzt Bereich von A2 bis Endzeile des letzten Landes in Spalte A
Set rngWert = ActiveWorkbook.ActiveSheet.Range("E2:E" & Cells(1, 1).End(xlUp).Row)

For Each Wert In rngWert
    'setzt dynamisch aktuelle Zellen neben der aktiven Iteration
    Set LandZelle = Wert.Offset(, -4)
    Set KPIZelle = Wert.Offset(, -1)
    'Wenn Land Amerika entspricht und KPI Umsatz dann Zufallszahl zwischen 600.000 und 900.000 in Wert
    If LandZelle = "Amerika" And KPIZelle = "Umsatz" Then
        Wert = WorksheetFunction.randbetween(600000, 900000)
    Else
        If LandZelle = "Amerika" Then Wert = Int(Rnd(100) * 100) * 1.1
    End If

Next Wert 
End Sub
 
Zuletzt bearbeitet:

Ähnliche Java Themen

Neue Themen


Oben