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

Mehrere Spaltenwerte in Zeile übertragen

Mehrere Spaltenwerte in Zeile übertragen
14.04.2017 10:45:59
Christian
Guten Morgen und frohe Ostern allen zusammen,
auch an Ostern beschäftigen mich meine VBA Herausforderungen und leider klomme ich nicht weiter.
Ich habe versucht das Problem und meinen aktuellen Code so detailiert wie möglich zu gestalten und hoffe sehr auf Ideen, Vorschläge, Tipps....
Problem:
In der Tabelle tblGrafik die Spalte (2) MSN mit der Spalte in der Tabelle tblPlanung Spalte (2) MSN abgleichen. Bei einer Übereinstimmung, die Zeile "einfrieren" und ab da als Referenzlinie verwenden. Jetzt sollen bestimmte Spaltenwerte "Datumswerte" in tblPlanung in die Zeile von Tabelle tblGrafik eingefügt werden.
In der Tabelle tblGrafik ist eine Datumsachse in Zeille (3) und in tblPlanung sind bestimmte Datumswerte. Die Datumswerte sollen in tblGrafik übertragen werden.
Userbild
Code:
Option Explicit
Private Sub Datumsabgleich()
'Feldbezeichnungen
'TA-1, TA-2, TA-3, TA-4, TA-5 = ColorIndex 22
'brt-1, brt-2, brt-3, brt-4, brt-5 = ColorIndex 17
'CF-1, CF-Start, CF-3, CF-4, CF-5 = ColorIndex 36
Dim i As Integer 'Zeile Grafik
Dim j As Integer 'Zeile Planung (Datenbasis)
Dim k As Integer 'Spalten variable für tblPlanung
Dim m As Long ' gefundene Zeile zwischen speichern
For i = 6 To 33 'Alle MSN in der tblGrafik durchgehen
For j = 2 To 34 'Alle MSN in der tblPlanung durchgehen
If tblGrafik(i, 2) = tblPlanung(j, 2) Then 'Abgleich MSN Spalte 2 in tblGrafik, Spalte 2 in  _
tblPlanung
m = tbl.Planung(j, Rows.Column.Count).End(xlToLeft).Row + 1 'Die gefundene Zeile merken
Else
End If
Next j
Next i
If tblGrafik(3, d) = tbPlanung(m, j) Then 'für die bestimmte MSN in der jeweiligen Zeile
With tblPlanung
'Alle unten aufgeführten Spaltenwerte für die jeweilige MSN zwischen speichern und später  _
in tblGrafik einfügen
End With
With tblGrafik
'Die Zellen merken
.Cells(i, 4).Value = "TA-1"
.Cells(i, 4).Interior.ColorIndex = 22
.Cells(i, 8).Value = "TA-2"
.Cells(i, 8).Interior.ColorIndex = 22
.Cells(i, 12).Value = "TA-3"
.Cells(i, 12).Interior.ColorIndex = 22
.Cells(i, 16).Value = "TA-4"
.Cells(i, 16).Interior.ColorIndex = 22
.Cells(i, 20).Value = "TA-5"
.Cells(i, 20).Interior.ColorIndex = 22
.Cells(i, 5).Value = "BRT-1"
.Cells(i, 5).Interior.ColorIndex = 17
.Cells(i, 9).Value = "BRT-2"
.Cells(i, 9).Interior.ColorIndex = 17
.Cells(i, 13).Value = "BRT-3"
.Cells(i, 13).Interior.ColorIndex = 17
.Cells(i, 17).Value = "BRT-4"
.Cells(i, 17).Interior.ColorIndex = 17
.Cells(i, 21).Value = "BRT-5"
.Cells(i, 21).Interior.ColorIndex = 17
.Cells(i, 6).Value = "CF-1"
.Cells(i, 6).Interior.ColorIndex = 36
.Cells(i, 10).Value = "CF-Start"
.Cells(i, 10).Interior.ColorIndex = 36
.Cells(i, 14).Value = "CF-3"
.Cells(i, 14).Interior.ColorIndex = 36
.Cells(i, 18).Value = "CF-4"
.Cells(i, 18).Interior.ColorIndex = 36
.Cells(i, 22).Value = "CF-5"
.Cells(i, 22).Interior.ColorIndex = 36
End With
Next j
Next i
End Sub

Ich weiss sehr wohl, das ich hier sehr viel vom Forum erwarte. A sich überhaupt in das Problem einzudenken und B Lösungsvorschläge zu generien. Aber ich hoffe ihr seht das mich das Problem sehr beschäftigt und ich daran bin das zu erarbeiten aber ich komme einfach im Moment nicht weiter..
Vielen Dank für eure Bemühungen
Anbei die Beispieldatei
https://www.herber.de/bbs/user/112876.xlsm
Viele Grüße
Christian

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

Betreff
Datum
Anwender
Anzeige
AW: Mehrere Spaltenwerte in Zeile übertragen
14.04.2017 11:07:42
Rainer
Hallo Christian,
hier mal eine Lösung nur mit den Formeln INDEX und VERGLEICH (und einem WENNFEHLER für die Kreuzchen):
https://www.herber.de/bbs/user/112877.xlsm
Außerdem gibt es jetzt bedingte Formatierungen um die Zellen farbig zu machen. Es ist ja schließlich Ostern, da muss es bunt sein. :-)
Wenn du neue Beiträge erstellst, die sich evtl auf ältere Beiträge beziehen, dann weise bitte darauf hin und am besten füge noch einen Link in den neuen Beitrag ein.
Gruß,
Rainer
AW: Mehrere Spaltenwerte in Zeile übertragen
14.04.2017 11:27:17
Christian
Hallo Rainer,
das werde ich auf jeden Fall in Zukunft so handhaben und auf alte Beiträge referenzieren.
Dein Vorschlag mit den bedingten Formatierung klingt richtig gut und sieht super aus, vielen Dank dafür. Gibt es auch eine Möglichkeit die Zellgrößen automatisch in der Größe anzupassen wenn jetzt zum Beispiel ein längeres Wort CF-Start übertragen wird. Ich denke da an den Code Autofit aber gibt es da auch eine bedingte Formatierungs Lösung?
Viele Grüße
Christian
Anzeige
AW: Mehrere Spaltenwerte in Zeile übertragen
14.04.2017 11:55:46
Rainer
Hallo Christian,
Ich kenne keine Formel, welche die Spaltenbreite verändern könnte. Ergo auch keine bedingte Formatierung.
Mit VBA kann man da bestimmt was machen. Ich habe aber gerade leider keine Zeit dazu.
Einfacher wäre es allerdings, die Spalten zu markieren (komplett) und dann "zwischen den Spalten" einen Doppelklick zu machen. Das passt die Spaltenbreite automatisch an. Das Maussymbol sieht so aus:
Aber ganz nach meinem persönlichen Empfinden sieht es am besten aus, wenn du alle Spalten mit einheitlicher Breite formatierst, weil ja auch "CF-Start" überall auftreten kann.
Nur leider kommt man da trotzdem schnell in die "Formatierungshölle". Die Schriftgrößen in Excel ändern sich leider anders als die Zellengrößen, wenn man die Zoomstufe ändert.
Bei mir sieht deine Tabelle gut aus wenn ich bei 70% Zoom die Spaltenbreite auf 7.00 (61Pixel) einstelle.
Gruß,
Rainer
Anzeige
AW: Mehrere Spaltenwerte in Zeile übertragen
14.04.2017 13:48:28
Christian
Ganz banaler Fehler :D Ich hatte in der Tabelle Planung noch eine zusätzliche Zeile.. so kann es gar nicht funktionieren. Vielen Dank Rainer für deinen Support :)
Erweiterung um Wenn Funktion
14.04.2017 14:12:18
Christian
Eine Erweiterung um eine Wenn Funktion

=WENNFEHLER(INDEX(Planung!$A$1:$Z$1;VERGLEICH(F$3;INDEX(Planung!$A$1:$A$100;VERGLEICH($B6; Planung!$B:$B;0)):INDEX(Planung!$Z$1:$Z$100;VERGLEICH($B6;Planung!$B:$B;0));0));""); Wenn(Und(F3>=Planung!F2;Grafik!F3
Zwischen den Datumswerten möchte ich vom Anfangsdatum (CF-1) bis zum Enddatum (CF-Ende) X2 eintragen, um diese dann blau zu markieren. So sollen die Zeiträume als Balken dargestellt werden.
Leider meckert Excel bei der Erweiterung. Woran kann es liegen?
Viele Grüße
Christian
Anzeige
AW: Erweiterung um Wenn Funktion
18.04.2017 06:46:45
Rainer
Hallo Christian,
da sind viele Fehler drin.
Füge die Formel im Excel ein und schaue, wie die Klammern farbig markiert sind. Deine ganze WENN() Formel ist außerhalb der Syntax platziert:
=WENNFEHLER(INDEX(Planung!$A$1:$Z$1;VERGLEICH(F$3;INDEX(Planung!$A$1:$A$100;
VERGLEICH($B6;Planung!$B:$B;0)):INDEX(Planung!$Z$1:$Z$100;VERGLEICH($B6;Planung!$B:$B;0))
;0));""); Wenn(Und(F3>=Planung!F2;Grafik!F3) 
Wenn man das korrigiert, dann sieht es so aus:
=WENNFEHLER(INDEX(Planung!$A$1:$Z$1;VERGLEICH(F$3;INDEX(Planung!$A$1:$A$100;
VERGLEICH($B6; Planung!$B:$B;0)):INDEX(Planung!$Z$1:$Z$100;VERGLEICH($B6;Planung!$B:$B;0))
;0));WENN(UND(F3>=Planung!F2;Grafik!F3
Die WENN() Abfrage ist die alternative Option in der WENNFEHLER() Abfrage.
Aber auch das kannst du noch nicht "Durchziehen" auf die anderen Zellen,
weil du die Zeilen und Spalten nicht fixiert hast:
F3>=Planung!F2
muss richtigerweise

F$3>=Planung!$F2
sein
Auch dann sind wir noch nicht am Ziel.
Zu guter letzt hast du Spalte U statt V als Bezug angegeben.
So kann es nicht klappen.
Außerdem sucht der erste Teil der Formel nun über die MSN-Nummer dynamisch nach der richtigen Zeile im Blatt "Planung", während deine WENN() Formel da fix auf die Zeilennummer festgelegt wird. Das ist nicht sehr konsequent. Also machen wir zuerst die schicke Variante und lassen alles anhand der MSN Nummer suchen (für den Fall, dass jemand eine der beiden Tabellen mal sortieren will):
=WENNFEHLER(INDEX(Planung!$A$1:$Z$1;VERGLEICH(F$3;INDEX(Planung!$A$1:$A$100;
VERGLEICH($B6;Planung!$B:$B;0)):INDEX(Planung!$Z$1:$Z$100;VERGLEICH($B6;Planung!$B:$B;0));0));
WENN((F$3>=INDEX(Planung!$F$1:$F$100;VERGLEICH($B6;Planung!$B:$B;0)))*
(F$3
und falls nicht, dann viel einfacher so:
=WENNFEHLER(INDEX(Planung!$1:$1;VERGLEICH(F$3;Planung!2:2;0));
WENN((F$3>=Planung!$F2)*(F$3
Gruß,
Rainer
Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige