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

Je Wert mehrere Zeilen verwenden

Je Wert mehrere Zeilen verwenden
12.03.2013 08:41:48
PetH
Hallo zusammen,
ich bin zwar Recht fit was Excel-Formeln angeht, dennoch komme ich bei folgendem Problem nicht weiter und benötige eure Hilfe. Zumindest komme ich mit Sverweisen nicht ans Ziel.
Ausgangssituation:
1) Ein Formular „alt“ beinhaltet mehrere IDs mit korrespondierendem Kürzel und einer Menge. Diese Information findet sich auf Reiter Werte.
2) Ein Formular „alt“ teilt sich in ein oder mehrere „neue“ Formulare. Inwiefern sich ein Formular aufteilt, zeigt sich in Reiter Schlüsselung. So teilt sich bspw. Formular 20 in die Formulare 21-23. Die prozentuale Aufteilung ist in Spalte D hinterlegt und wird für die Schlüsselung der Mengen benötigt.
3) Das Ziel ist die ursprünglichen Werte des „alten“ Formulars im Reiter Zielformular abzubilden. Gleichzeitigen sollen die „neuen Formulare“ mit geschlüsselten Werten ebenfalls im Zielformular abgebildet werden.
D.h. je „altem“ Formular sollen die Kürzel, IDs und Mengen zeilenweise in das Zielformular übertragen werden.
Dasselbe soll auch geschlüsselt für alle „neuen“ Formulare geschehen. Dies ergibt in meinem Bsp. folgendes:
- Im ersten Fall hätten wir je 4 Zeilen für Formular 10 und 11
- Im zweiten Fall hätten wir je eine Zeile für die Formulare 20-23
Die Schlüsselung der neuen „Formulare“ bezieht sich selbstverständlich nur auf die Mengen und sollte negativ zur Menge des „alten“ Formulars sein.
Vielen Dank für Eure Hilfe,
Pet

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Ja ne, is klar ...
12.03.2013 08:49:12
Klaus
Hallo Pet,
lies bitte mal ein eigenes Posting und stell dir die Frage:
Glaubst du wirklich, dass irgendwer damit was anfangen kann? Oder auch nur entfernt versteht, wass du erreichen möchtest?
Da unten ist ein Button, auf dem steht "Zum File-Upload". Damit kann man Musterdateien hochladen.
Grüße,
Klaus M.vdT:

Musterdatei gesehen, aber immer noch Bahnhof.
12.03.2013 08:51:47
Klaus
Hallo Pet,
während ich schrieb, hast du die Datei hochgeladen.
Ich versteh aber immer noch nichts. Da ist nichtmal ein Reiter "alt" in deiner Datei, von dem du vorher gesprochen hast.
Pet, niemand ausser dir weiss was deine Datei bezwecken soll. Was dir selbstverständlich scheint, muss den Helfern erst erklärt werden. Also. WELCHE Werte sollen nach WELCHER Logik Zeilenweise (das heisst VBA erlaubt, ja?) WOHIN geschrieben werden?
Grüße,
Klaus M.vdT.

Anzeige
Daten umgruppieren - VBA
12.03.2013 10:14:41
Erich
Hi Pet/Fabian,
das würde ich nicht mit Formeln machen wollen, auch wenn das machbar ist.
Daher mein VBA-Vorschlag:

Option Explicit
Sub Form_alt_neu()
Dim zs As Long, zw As Long, ze As Long, arrS, arrW, arrE()
With Sheets("Schlüsselung")
zs = .Cells(.Rows.Count, 4).End(xlUp).Row - 1
arrS = .Cells(2, 1).Resize(zs, 4)
End With
With Sheets("Werte")
zw = .Cells(.Rows.Count, 1).End(xlUp).Row - 1
arrW = .Cells(2, 1).Resize(zw, 6)
End With
ReDim arrE(1 To 3, 1 To UBound(arrS) * UBound(arrW))
For zs = 1 To UBound(arrS)
If IsEmpty(arrS(zs, 2)) Then
For zw = 1 To UBound(arrW)
If arrW(zw, 1) = arrS(zs, 4) Then
ze = ze + 1
arrE(1, ze) = arrS(zs, 4)
arrE(2, ze) = arrW(zw, 2)
arrE(3, ze) = -arrW(zw, 6)
End If
Next zw
Else
For zw = 1 To UBound(arrW)
If arrW(zw, 1) = arrS(zs, 4) Then
ze = ze + 1
arrE(1, ze) = arrS(zs, 2)
arrE(2, ze) = arrW(zw, 2)
arrE(3, ze) = arrS(zs, 3) * arrW(zw, 6)
End If
Next zw
End If
Next zs
ReDim Preserve arrE(1 To 3, 1 To ze)
Sheets("Zielformular").Cells(2, 1).Resize(UBound(arrE, 2), 3) = _
Application.Transpose(arrE)
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
Daten umgruppieren - VBA - vereinfacht
12.03.2013 10:34:46
Erich
Hi Pet,
hier noch eine etwas einfachere und schnellere Version:

Option Explicit
Sub Form_alt_neu2()
Dim zs As Long, zw As Long, ze As Long, arrS, arrW, arrE()
Dim dblF As Double
With Sheets("Schlüsselung")
zs = .Cells(.Rows.Count, 4).End(xlUp).Row - 1
arrS = .Cells(2, 1).Resize(zs, 4)
End With
With Sheets("Werte")
zw = .Cells(.Rows.Count, 1).End(xlUp).Row - 1
arrW = .Cells(2, 1).Resize(zw, 6)
End With
ReDim arrE(1 To 3, 1 To UBound(arrS) * UBound(arrW))
For zs = 1 To UBound(arrS)
For zw = 1 To UBound(arrW)
If arrW(zw, 1) = arrS(zs, 4) Then
ze = ze + 1
arrE(1, ze) = arrS(zs, 1) + arrS(zs, 2)
arrE(2, ze) = arrW(zw, 2)
If IsEmpty(arrS(zs, 2)) Then dblF = -1 Else dblF = arrS(zs, 3)
arrE(3, ze) = arrW(zw, 6) * dblF
End If
Next zw
Next zs
ReDim Preserve arrE(1 To 3, 1 To ze)
Sheets("Zielformular").Cells(2, 1).Resize(UBound(arrE, 2), 3) = _
Application.Transpose(arrE)
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Daten umgruppieren - VBA - vereinfacht
12.03.2013 12:25:58
PetH
Hallo Erich,
vielen Dank für Deine Unterstützung! Dein Makro funktioniert perfekt und berücksichtigt alle Anforderungen. Deine Lösung werde ich als Ansporn nehmen, mich in die Welt der VBAs einzuarbeiten.
Viele Grüße,
Pet

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige