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

Planungsproblem

Planungsproblem
23.12.2015 10:43:41
Florian
Hallo zusammen,
habe eine neue Problemstellung
Ein Projekt A besitzt eine Auftragszeit und ein Liefertermin.
Auf einer fortlaufenden Kalenderwochenleiste, soll der Liefertermin eingeordnet werden. dafür soll die Fertigungszeit auf zwei Wochen VOR eintreten des Liefertermins geplant werden. ich hoffe die Beispielmappe stellt mein Problem umfassend dar.

Die Datei https://www.herber.de/bbs/user/102424.xlsx wurde aus Datenschutzgründen gelöscht

Das Problem soll mit VBA umgesetzt werden. Normale Excelformeln waren nicht genug.
Ich wollte das über If-Then Funktionen bewältigen.
If Range(D2,S2)=Range(U3,U26) Then ...
Also: Wenn ein Wert aus dem Bereich D2 bis S2 mit einem Wert aus dem Bereich U3 bis U26 übereinstimmt, soll der dazugwehörige Wert, aus der Zeile aus dem Bereich W3 bis W26, auf zwei Wochen vor dem Schnittpunkt verteilt werden.
Mein Problem ist das ich nicht so recht weis mit was ich anfangen muss. Bin vorallem daran Interessiert es zu verstehen um auf solche Fragen in Zukunft verzichten zu können.
Vielen Dank schonmal.

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Planungsproblem
23.12.2015 15:37:15
Sepp
Hallo Florian,
"Das Problem soll mit VBA umgesetzt werden. Normale Excelformeln waren nicht genug."
Geht doch ganz easy.
Tabelle1

 CDEFGHIJKLMNOPQRSTUVWX
1                      
2ProjektKW01KW02KW03KW04KW05KW06KW07KW08KW09KW10KW11KW12KW13KW14KW15KW16     
320016                 KW01 200 
420017200,0                KW02 400 
520018                 KW01 200 
620019 100,0100,0              KW04 200 
720020   200,0200,0            KW06 400 
820021   200,0200,0            KW06 400 
920022   200,0200,0            KW06 400 
1020023     214,3214,3          KW08 429 
1120024    228,6228,6           KW07 457 
1220025    242,9242,9           KW07 486 
1320026        257,1257,1       KW11 514 

Formeln der Tabelle
ZelleFormel
D3=($U3-2<=D$2)*($U3>D$2)*($W3/2)

Bedingte Formatierungen der Tabelle
ZelleNr.: / BedingungFormat
D31. / Formel ist =D$2=$U3Abc
D32. / Formel ist =D3<>0Abc


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
https://www.herber.de/bbs/user/102435.xlsx
Gruß Sepp

Anzeige
Nachtrag
23.12.2015 15:38:40
Sepp
Hallo nochmal,
die Zellen mit den KW's hab ich mit dem Format '"KW"00' formatiert, dann stehen Zahlen in den Zellen und es lässt sich leichter damit arbeiten.
Gruß Sepp

AW: Nachtrag
28.12.2015 06:22:59
Florian
Hallo Sebb,
Vielen Dank für deine Formatierung. Mit Excel hab ich dieses Problem bereits gelöst.
Ich würde aber gern das Problem mit VBA lösen. Grund dafür ist, das diese Aufteilung für mehrere Abteilungen/Bereiche gemacht werden muss. Des weiteren wird die Liste ständig erweitert sodass ich mit der Programmierung den allgemeinen Aufwand der Datenpflege verringern möchte.
Sry das ich mich erst jetzt melde, über Weihnachten lagen die Schwerpunkte bei der Familie :)
Gruß Florian

Anzeige
AW: Nachtrag
28.12.2015 09:03:11
Sepp
Hallo Florian,
ob der VBA-Code leichter zu pflegen ist, wird sich noch herausstellen.
Für deine Beispieldatei.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub planung()
Dim varPlan() As Variant, varKW As Variant, varValues As Variant
Dim varRet As Variant
Dim lngR As Long, lngLastRow As Long, lngLastCol As Long

With Tabelle1
  'Letzte Zeile in Spalte C ermitteln
  lngLastRow = Application.Max(3, .Cells(.Rows.Count, 3).End(xlUp).Row)
  'Letzte Spalte in Zeile 2 ermitteln
  lngLastCol = Application.Max(4, .Cells(2, .Columns.Count).End(xlToLeft).Column)
  
  'Array mit den KW's
  varKW = .Range(.Cells(2, 4), .Cells(2, lngLastCol))
  'Array mit den Werten
  varValues = .Range("U3:W" & lngLastRow)
  'Ausgabearray dimensionieren
  Redim varPlan(1 To lngLastRow, 1 To UBound(varKW, 2))
  
  For lngR = 1 To UBound(varValues, 1)
    varRet = Application.Match(varValues(lngR, 1), varKW, 0)
    If IsNumeric(varRet) Then
      If varRet - 1 > 0 Then varPlan(lngR, varRet - 1) = varValues(lngR, 3) / 2
      If varRet - 1 > 1 Then varPlan(lngR, varRet - 2) = varValues(lngR, 3) / 2
    End If
  Next
  'Ausgabe
  .Range("D3").Resize(UBound(varValues, 1), UBound(varKW, 2)) = varPlan
End With
End Sub

Gruß Sepp

Anzeige
AW: Nachtrag
28.12.2015 10:58:32
Florian
Hallo Sebb,
vielen dank :)
Ich habe es nachvollzogen, sodass ich vielleicht bald keine Hilfe mehr benötige :)
Gruß Florian

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige