Herbers Excel-Forum - das Archiv

Makro Beschickung errechnen


Betrifft: Makro Beschickung errechnen
von: Georg Spark

Geschrieben am: 19.09.2019 09:05:41
Guten Morgen,
ich habe folgende Tabelle:
https://www.herber.de/bbs/user/132107.xlsx

Ich möchte nun ein Makro erstellen, dass mir immer die Beschickung errechnet.
Die Beschickung wird wie folgt berechnet: Wenn(Bestand-Bedarf<0;Durchschnitts Bedarf;)
Problem ist, dass die Tabelle unterschiedlich viele Einträge haben kann.
Habe leider kaum Ahnung davon, deshalb freue ich mich über jede Anregung.
Liebe Grüße
Georg

Betrifft: AW: Makro Beschickung errechnen
von: 1713792.html
Geschrieben am: 19.09.2019 09:09:05
EDIT:
Der upload der Datei hat anscheinend nicht wirklich funktioniert, deshalb hier nochmal ein screenshot.
Userbild
Habe die jeweils verwendeten Formeln unten in die Spalte geschrieben

Betrifft: Hier der richtige Link
von: 1713794.html
Geschrieben am: 19.09.2019 09:12:49
https://www.herber.de/bbs/user/132107.xlsx

Betrifft: AW: Makro Beschickung errechnen
von: 1713799.html
Geschrieben am: 19.09.2019 09:31:05
Hallo Georg,
in deiner Formel fehlt der sonst Teil.
Sprich was wenn G2 nicht kleiner H2 ??
Gruß Werner

Betrifft: AW: Makro Beschickung errechnen
von: 1713804.html
Geschrieben am: 19.09.2019 09:37:26
Hallo Werner,
Sobald es größer 0 ist soll die Zelle leer bleiben, da keine Beschickung benötigt wird und man so eine bessere Übersicht hat wo etwas benötigt wird.
Liebe Grüße
Georg

Betrifft: AW: Makro Beschickung errechnen
von: 1713811.html

Geschrieben am: 19.09.2019 09:48:01
Hallo Georg,
ich habe jetzt mal für den Sonst Teil der Formel 0 genommen. Bei Leer bekommst du sonst bei deinen Formeln die den Bestand ausrechnen teilweise den Fehlerwert #WERT ausgegeben.
Public Sub Beschickung()
Dim i As Long, loLetzte As Long
With Worksheets("Tabelle1")
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 9 To .Cells(1, .Columns.Count).End(xlToLeft).Column Step 4
.Range(.Cells(2, i), .Cells(loLetzte, i)).FormulaR1C1 = "=IF(RC[-2]-RC[-1]<0,RC[-4],0)"
.Range(.Cells(2, i), .Cells(loLetzte, i)).Value = .Range(.Cells(2, i), .Cells(loLetzte,  _
i)).Value
Next i
End With
End Sub
Gruß Werner

Betrifft: AW: Makro Beschickung errechnen
von: 1713821.html
Geschrieben am: 19.09.2019 10:14:34
Dankeschön Werner, funktioniert super! Noch eine kleine Frage hinterher: Kann man auch die Spalten beschränken bsp. Nur von A bis Z ?
Liebe Grüße
Georg

Betrifft: AW: Makro Beschickung errechnen
von: 1713823.html

Geschrieben am: 19.09.2019 10:21:09
Hallo Georg,
warum denn bitte von Spalte A ??
In der For Schleife
For i = 9 To .Cells(1, .Columns.Count).End(xlToLeft).Column Step 4

steht die 9 für die erste Spalte in der in deiner Tabelle das erste mal die "Beschickung" kommt. Warum dann also ab Spalte A ??
Wenn du die Schleife nur bis zur Spalte Z laufen lassen willst dann
For i = 9 To 26 Step 4

weil Z = Spalte 26
Gruß Werner

Betrifft: AW: Makro Beschickung errechnen
von: 1713827.html

Geschrieben am: 19.09.2019 10:40:34
Das war nur ein Beispiel :D
For i = 9 To 26 Step 4

funktioniert super!
Ich muss die Formel nun auf eine andere Tabelle anpassen, die ich aber nicht zeigen kann(Datenschutz).
Verstehe ich die Formel richtig:
FormulaR1C1 = "=IF(RC[-6]-RC[-2]<0,RC[-5],0)"
vom Startpunkt (9) aus ist mein erster Wert bei -6(also 3) der zweite -2(also7) und der letzte Wert -5(bei 4) stimmt das soweit?
Durch Step spring er ja immer 4 weiter wird dann nach dem Step wieder das gleiche angewendet also -6(7) -2(11) -5(8)?
Liebe Grüße
Georg

Betrifft: AW: Makro Beschickung errechnen
von: 1713829.html
Geschrieben am: 19.09.2019 10:44:02
Hallo Georg,
ja, genau so.
Gruß Werner

Betrifft: AW: Makro Beschickung errechnen
von: 1713832.html

Geschrieben am: 19.09.2019 10:51:28
Kann ich auch den letzten Wert also RC[-5],0 auch auf eine feste Spalte lenken
FormulaR1C1 = "=IF(RC[-6]-RC[-2]<0,RC[-5],0)"

Ich habe den durchschnitts Bedarf nur einmal in einer Zeile, dass heißt des die RC[-5],0 nach dem ersten Step nicht mehr auf den durchschnitts Bedarf zugreifen, sondern auf einen Wert 5 Spalten früher.
Kann ich irgendwie in der Formel sagen, dass immer Spalte Bx eingetragen wird? (x in diesem Fall für die Zeile)
Geht es etwa so?
FormulaR1C1 = "=IF(RC[-6]-RC[-2]<0,RC[Bx],0)"

Liebe Grüße
Georg

Betrifft: AW: Makro Beschickung errechnen
von: 1713835.html
Geschrieben am: 19.09.2019 11:06:01
Hallo Georg,
lass mal den Makrorekorder laufen und gib dann deine Formel im Blatt so in die Zelle ein, wie du sie brauchst.
Der Rekorder zeichnet das in der R1C1 schreibweise auf.
Gruß Werner

Betrifft: AW: Makro Beschickung errechnen
von: 1713840.html
Geschrieben am: 19.09.2019 11:16:54
Da gibt er mir leider immer nur die -5 und keinen festen Zellenbezug.
Ich brauche nur das der true-Wert eine feste Zelle ist.
Kann man nicht irgendwie einfach in der Formel auf eine feste Zelle verweisen?
Liebe Grüße
Georg

Betrifft: AW: Makro Beschickung errechnen
von: 1713842.html
Geschrieben am: 19.09.2019 11:24:03
Hallo Georg,
wenn du die Formel auf eine Zeile fixiert haben willst, dann mußt du bei der Eingabe die Fixierung mit dem $ Zeichen setzen. Das zeichnet dir der Rekorder dann auch richtig auf.
Beispiel:
=$R3 Formel ist fixiert für Spalte R
=R$3 Formel ist fixiert für Zeile 3
Gruß Werner

Betrifft: AW: Makro Beschickung errechnen
von: 1713850.html
Geschrieben am: 19.09.2019 12:01:14
Hat funktioniert vielen Dank (Y)

Betrifft: Gerne u. Danke für die Rückmeldung. o.w.T.
von: 1713852.html
Geschrieben am: 19.09.2019 12:02:16

Excel-Beispiele zum Thema "Makro Beschickung errechnen"
Portokosten aus einer Gewichts-/Gebietsmatrix errechnen Zeitdifferenz in Schulstunden (45 Minuten) errechnen
Schulnote anhand einer Punktetabelle errechnen Werte summieren, in erste freie Zeile eintragen, Differenz errechnen
Vorgegebenes Datum plus 33 1/3 Jahr errechnen Nachtstunden ermitteln und Lohn errechnen
Km/h errechnen
Bewerten Sie hier bitte das Excel-Portal