Bezug jede 2. Zeile um eins erhöhen
#1
Hallo zusammen,

ich habe ein Problem und hoffe ihr könnte mir dabei helfen.
Ich habe zwei Tabellen in meinem Dokument
Tab1 hat eine Auflistung von Werten von Tab1!A1 bis Tab1!A20
Tab2 soll nun die Werte "zerpflücken", so dass

Tab2!A1 = Tab1!A1 "Teil1"
Tab2!A2 = Tab1!A1 "Teil2"
Tab2!A3 = Tab1!A2 "Teil1"
Tab2!A4 = Tab1!A2 "Teil2" 
usw. 

entspricht. Das zerpflücken bezieht sich auf Texte und Zahlen etc. also nicht so komplex.
Wenn ich meine Formeln dann aber in Tab2 via Mausklick "weiter nach unten erweitere" ... damit ich nicht jede Formel manuell anpassen muss (in der echten Tabelle geht es nicht bis 20 sondern 1000), macht er den Bezug aber falsch. Habt ihr Lösungsvorschläge?

Liebe Grüße,
Markus
Top
#2
Hallo Markus,

mit den Funktionen LINKS(), RECHTS() und TEIL() könntest du zum Ziel kommen. Mehr, wenn du ein Beispiel postest. https://www.clever-excel-forum.de/thread-326.html
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top
#3
Hallo Markus,

(05.05.2019, 19:20)masse schrieb: Wenn ich meine Formeln dann aber in Tab2 via Mausklick "weiter nach unten erweitere" ...

welche Formeln?

Gruß Uwe
Top
#4
Danke schon einmal ... das "Zerlegen" für sich ist kein Problem (Links/Rechts/Teil ... funktionieren super) ...

meine Frage geht eher darum, wie ich die Formel eben im zwei Zeilen Intervall weiterführen kann ... hier mal ein Beispiel im Anhang.
also TAB1 sind die vorhandenen Basisdaten 
und TAB2 zeigt wie ich dann eben die Zeilen aus Tab2 zerlege und es immer zwei Zeilen in Tab2 für jeweile eine Zeile in Tab1 gibt. 
Wenn ich nun aber die Tabelle automatisch weiterführen will, dann macht er die Formelbezüge von Tab2 zu Tab1 falsch. Ideen?
Liebe Grüße,
Markus


Angehängte Dateien
.xlsx   sample.xlsx (Größe: 9,46 KB / Downloads: 9)
Top
#5
Hallo, schade, dass bei den Anfragen die Beispiele so "dahingerotzt" werden, z.B. haben Tabellen hier keine Überschriften. Nun kann man sich darüber aufregen, dass ich mich darüber aufrege, is mir aber egal. Das ist mit Power Query - in wenigen (maximal  drei) Schritten, mit ohne Formeln und dynamisch - erledigt... 

Eigentlich nur :Tabelle (!) nach PQ laden, "Spalte nach Trennzeichen teilen" {Aufteilen in Zeilen} und ausgeben... Fertich!!!
Power Query ist ein Add-In, dass ab XL2010 zur Verfügung steht (kann man kostenlos downloaden und installieren) und ab XL2016 ist es fester Bestandteil von XL...
Gruß Jörg
stolzes Mitglied im ----Excel-Verein
Freund einer excellenten Power Query-Abfrage
Top
#6
Lieber Jockel,

danke für die Idee und deine Kritik - ich bin ein Fan von Pragmatismus und die Realdaten sind vertraulich - deshalb leider nicht zu veröffentlichen.
PowerQuerry kenne ich - gibt es aber auch einen Ansatz der die Bezüge in Formeln richtig macht?
Liebe Grüße,
Markus
Top
#7
(06.05.2019, 01:17)masse schrieb: ...
danke für die Idee und deine Kritik - ich bin ein Fan von Pragmatismus und die Realdaten sind vertraulich ...
PowerQuerry kenne ich - gibt es aber auch einen Ansatz der die Bezüge in Formeln richtig macht?

Hallo, du scheinst meine "Kritik" aber nicht verstanden zu haben (es geht nicht um "Real"daten); musst du auch nicht - da hast du Recht. 

Bestimmt geht das auch mit Formeln... Ganz bestimmt sogar.
Gruß Jörg
stolzes Mitglied im ----Excel-Verein
Freund einer excellenten Power Query-Abfrage
Top
#8
a) Der normale Zugriff, zellverdoppelnd:

Tab2!A1[:A999]: =INDEX(Tab1!A:A;ZEILE(A1)/2+0,5)

b) Falls die "Teile" in den Bezügen vor und ab dem 13ten Zeichen stehen:

Tab2!A1[:A999]: =TEIL(INDEX(Tab1!A:A;ZEILE(A1)/2+0,5);1+12*(REST(ZEILE(A1);2)=0);12)

c) Falls die "Teile" leerzeichengetrennt sind, mit "/" oder etwas ganz anderes: Noch mal nachfragen. Bitte unterlasse dabei ab jetzt jedwede Salamitaktik und bemühe Dich um vollständige Problembeschreibung nicht anhand von Text, sondern ausreichenden Beispielen und Wunschergebnissen.

Tab2!A1[:A999]: =GLÄTTEN(TEIL(WECHSELN(INDEX(Tab1!A:A;ZEILE(A1)/2+0,5);"/";WIEDERHOLEN(" ";99));(1+(REST(ZEILE(A1);2)=0))*99-98;99))

(mit http://www.office-hilfe.com/support/show...-aufteilen)
___________________________________________________________________________________
Hallo Jockel,

vor einem Jahr warst Du noch bereit zu Formellösungen. Warum jetzt so häufig der Allgemeinplatz PQ? Im Grunde ist das eine Antwort wie: "Excelformeln sind out. Lerne PQ - helfen tun wir dabei nicht, und Formelfragen sind nun aus der Sicht von uns PQ-Verfechtern genug im Netz beantwortet."

Ich fände für PQ ein "Konstruktionsmakro" fair. Dabei werden die PQ-Schritte (falls sie denn überhaupt aufgezeichnet werden können) 1. schrittweise gezeigt und 2. die neuen Excel-Objekte dazu vermittelt, wenn man sich auch noch die Mühe macht, die Aufzeichnung zu bearbeiten. Ist auch egal, mit welcher Version. Vermutlich wäre es mit 2016, 2019 oder 365 halbwegs gleich (wobei 365 sich immer ändern kann), da dort jeweils fest eingebaut, kein Add-In.
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
[-] Folgende(r) 1 Nutzer sagt Danke an LCohen für diesen Beitrag:
  • masse
Top
#9
In VBA:


Code:
Sub M_snb()
   sn = Cells(1).CurrentRegion
   ReDim sp(2 * UBound(sn), 1)
   
   For j = 1 To UBound(sn)
      sp(2 * (j - 1), 0) = Split(sn(j, 1), "/")(0)
      sp(2 * (j - 1) + 1, 0) = Split(sn(j, 1), "/")(1)
      sp(2 * (j - 1), 1) = sn(j, 2)
      sp(2 * (j - 1) + 1, 1) = sn(j, 2)
   Next
   
   Cells(1, 6).Resize(UBound(sp) + 1, 2) = sp
End Sub


oder


Code:
Sub M_snb()
   Cells(1).Resize(2 * Cells(1).CurrentRegion.Rows.Count) = Application.Transpose(Split(Join(Application.Transpose(Cells(1).CurrentRegion.Columns(1)), "/"), "/"))
   
   With Cells(1).CurrentRegion.Columns(1)
        .Offset(, 4) = "=offset(B$1,int((row()-1)/2),0)"
        .Offset(, 1) = .Offset(, 4).Value
        .Offset(, 4).ClearContents
    End With
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top
#10
Danke für die Lösungen - werde mich die kommenden Tage damit beschäftigen (bin gerade auf Reisen) und mich dann zurück melden.
Bis bald,
Markus
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste