Microsoft Excel

Herbers Excel/VBA-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.

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


Beiträge aus dem Excel-Forum zum Thema "Makro Beschickung errechnen"