Clever-Excel-Forum

Normale Version: Zelle um Zahlenwert verschieben
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo liebe Experten,

für meine aktuelle Aufgabe in der Firma muss ich Zeile für Zeile eine Zelle in Tabelle 3, um einen Zahlenwert (0 bis 7) aus Tabelle 2, nach rechts verschieben.

Ich habe leider keine Idee für einen Code-Ansatz - völliger VBA- bzw. programmier-Neuling

LG Luca
Hallo,

Du könntest die Tabelle2 in einem zweiten Fenster öffnen (Reiter Ansicht, Neues Fenster). Dann siehst Du den Wert gleich und kannst einfacher verschieben.
Hallo,

leider würde mir das nur etwas für den aktuellen Fall nützen. Da hab ich mich eventuell unklar ausgedrückt.

Die Verschiebung ist immer anders - von Datei zu Datei. Der Code muss es allgemein ausführen können, egal was vorgegeben ist. 

In jedem falle aber handelt es sich um die gleiche Spalte der Quelldaten und die gleiche Range der Zielzellen.

Sozusagen muss die Zelle (Z7S4) in Tabelle 3 um die Zahl (0 bis 7) in Zelle (Z2S1) Tabelle 2 verschoben werden. 
Dann das ganze für (Z8S4) Tab. 3 aus (Z3S1) Tab. 2.

Und das für alle Daten der Spalte, welche immer unterschiedlich lang ist.

LG Luca
Hallo

Schau mal ob dir das weiterhilft.
https://www.ms-office-forum.net/forum/sh...p?t=372230
Wenn ich das Thema des Links richtig verstehe ist das eine ganz andere Baustelle.

Hab noch mal zwei Screenshots angehängt. Grundlage.png stellt Tabelle 2 dar, aus der die Zahl der Einrückung kommt.
Ziel.png zeigt anhand der Pfeile die Verrückung in Tabelle 3, um die Zahl der Einrückung aus Tabelle 2.

Die Pfeile zeigen nicht die richtige Einrückung- nur beispielhaft...
Hallöchen,

im Prinzip so, aber bitte vor Anwendung eine Sicherheitskopie anlegen. Es wird nicht geprüft, ob in Tabelle2 in der zugehörigen Zelle auch eine Zahl steht. Das Makro hört bei der ersten leeren Zelle nach D7 von Tabelkle3 auf.

Code:
Sub Verschieben()
'Makro in Tabelle3 starten!
'Variablendeklaration
Dim iCnt&
'Startzeile festlegen
iCnt = 7
'Schleife bis zur ersten leeren Zelle in Spate D (4)
Do While Cells(iCnt, 4).Value <> ""
  'Zelle ausschneiden
  Cells(iCnt, 4).Cut
  'Zelle um den Wert aus Tabelle2, 5 Zeilen weiter oben, nach rechts verschieben
  Cells(iCnt, Sheets("Tabelle2").Cells(iCnt - 5).Value).Insert Shift:=xlToRight
  'Schleifenzaehler hochsetzen
  iCnt = iCnt + 1
'Ende Schleife bis zur ersten leeren Zelle in Spate D (4)
Loop
End Sub
Ich habe jetzt eine Kopie angelegt um es zu testen. mit deinem Code 1zu1, aber auch, wenn ich den Richtigen Arbeitsblatt-Namen eingebe kommt Laufzeitfehler 13, Typen unverträglich. Beim Debuggen wird die Zeile:

Do While Cells(iCnt, 4).Value <> ""

angezeigt. Muss ich dort eine Anpassung vornehmen?
Was is das Ziel dieser Verschiebung ?
Angehängt ist nun doch eine komplette Beispiel-Datei. 

Die Verschiebung wird benötigt im Tabellenblatt 3 (ET-VT- Firma), um die Layoutbezeichnungen in Zelle (Z7S4) um den Zahlenwert in Tabelle 2 (Hier Nav...) Zelle (Z2S1 und folgende) zu verschieben.

Dies dient im späteren einer übersichtlichen Struktur, woraus sofort zu erkennen ist aus wie viel Ebenen ein Produkt besteht. 
Sozusagen: 
verrücken um 0 = Endprodukt (oberste Baugruppe) 
verrücken um 1 = Eine Baugruppe, oder ein Teil, welches am Endprodukt verbaut ist
verrücken um 2 = Teile der Baugruppe, welche dann am Endprodukt angebracht wird
verrücken um 3 = sozusagen eine baugruppe der Baugruppe von der Baugruppe......
Hallöchen,

Cells(iCnt - 5)

da fehlt noch die Spaltenangabe.

Cells(iCnt - 5, 1)

Allerdings gibt es keine Zelle 0 ... Wenn die Zahl die Verschiebung sein soll, müsstest Du noch 4 addieren.

Cells(icnt, Sheets("Tabelle2").Cells(iCnt - 5, 1).Value + 4)...
Seiten: 1 2