Transponieren mit Verknüpfung per VBA

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
InputBox MsgBox
Bild

Betrifft: Transponieren mit Verknüpfung per VBA von: Janine
Geschrieben am: 13.04.2005 15:17:06

Hallo Profis,

ich möchte eine Tabelle transponieren.
Dabei soll die erste Zeile aus Tabellenblatt 1 in die erste Spalte von Tabellenblatt 2 kopiert werden. Das wäre einfach!

Die Dateien sollen aber nicht kopiert werden, sondern Blatt 2 soll mit Blatt 1 verknüpft werden.
Und die Zeile aus Blatt 1 soll nicht komplett verknüpft werden, sondern nur der Wert aus jeder zweiten Spalte.

D.h. aus Blatt1, Zeile1: A1 B1 C1 D1 E1 F1 G1...
wird
Blatt 2, Spalte 1:
A1
C1
E1
G1
... (aber verknüpft).

Das Ganze muss eine VBA-Lösung werden und der Makro sollte dabei so gestaltet sein, dass ich Quellzeile und Zielspalte sowie das Intervall manuell verändern kann.

Ich habe jetzt schon eine Weile im Forum gesucht und gebastelt aber es klappt leider alles nicht.

Ich hoffe, mein Problem ist verständlich und jemand weiß Rat.

Tausend Dank im Voraus,

Janine

Bild


Betrifft: AW: Transponieren mit Verknüpfung per VBA von: Janine
Geschrieben am: 13.04.2005 17:24:47

Ich fürchte, ich muss mein Problem noch mal umformulieren.

Ich will einfach nur per Makro Spalte "A" im Tabellenblatt1 mit jeder zweiten Zelle von Zeile 1 im Tabellenblatt2 verknüpfen.

Den Makro kann ich dann hinterher selber so editieren, dass ich auch andere Spalten und Zeilen miteinander verknüpfen kann.

Ich ärger mich selber, weil ich weiß, dass es nicht schwer ist aber ich kriege es einfach nicht hin!

Danke für die Hilfe,

Janine


Bild


Betrifft: AW: Transponieren mit Verknüpfung per VBA von: Ceyser Soze
Geschrieben am: 13.04.2005 21:33:51

Hi Janine,
hier ist ein Beispielmappe: https://www.herber.de/bbs/user/21120.xls

Gruß
CS


Bild


Betrifft: AW: Transponieren mit Verknüpfung per VBA von: Harry
Geschrieben am: 13.04.2005 21:36:02

Hallo Janine,

meinst du vielleicht so was in der Art?

Ein Beispiel:

''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Dieses Makro ins Tabellenblatt-Modul für "Tabelle2":
''''''''''''''''''''''''''''''''''''''''''''''''''''''
Option Explicit


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim zahl
Dim vzahl As Integer
Dim n As Long
'
eingabe:
    zahl = InputBox("Geben Sie einen Wert ein:", "Anzahl Verknüpfungen")
    If Not IsNumeric(zahl) Then
    MsgBox "Dies ist keine gültige Zahl!"
    GoTo eingabe
    End If
    vzahl = zahl
    If vzahl = 0 Or vzahl > 127 Then
    MsgBox "Zahl liegt ausserhalb des gültigen Bereichs!"
    GoTo eingabe
    End If
    ActiveCell.FormulaR1C1 = "=Tabelle1!RC"
    For n = 1 To vzahl
    ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 & " & Tabelle1!RC[" & 2 * n & "]"
    Next n
End Sub


Gruss Harry


Bild


Betrifft: AW: Transponieren mit Verknüpfung per VBA von: Harry
Geschrieben am: 14.04.2005 21:46:55

Hi Janine,

hatte gestern deine Frage wohl komplett missverstanden - sorry :-|...

hab da was getestet, was dir vielleicht weiterhelfen könnte:

Option Explicit


Sub Verknüpfungen_einfügen()
Dim Quellzeile As Integer
Dim Zielspalte As Integer
Dim i, n, Intervall As Integer
Dim vQuellzeile, vZielspalte, vIntervall
    Sheets("Tabelle2").Select
eingabe1:
    vQuellzeile = InputBox("Bitte Wert eingeben:", "Quellzeile (Zeilennummer)")
    If Not IsNumeric(vQuellzeile) Then
    MsgBox "Dies ist keine gültige Quellzeile!", vbExclamation, "Zahl"
    GoTo eingabe1
    End If
    Quellzeile = vQuellzeile
    If Quellzeile = 0 Or Quellzeile > 65536 Then
    MsgBox "Quellzeile liegt ausserhalb des gültigen Bereichs!", vbCritical, _
"Bereich: Zeile 1 bis max. 65536"
    GoTo eingabe1
    End If
eingabe2:
    vZielspalte = InputBox("Bitte Wert eingeben (z.B.: 1 für Sp. A, 2 für Sp. B, u.s.w...):", _
    "Zielspalte (Spaltennummer)")
    If Not IsNumeric(vZielspalte) Then
    MsgBox "Dies ist keine gültige Zielspaltennummer!", vbExclamation, "Zahl"
    GoTo eingabe2
    End If
    Zielspalte = vZielspalte
    If Zielspalte = 0 Or Zielspalte > 256 Then
    MsgBox "Quellzeile liegt ausserhalb des gültigen Bereichs!", vbCritical, _
"Bereich: Spalte 1 bis max. 256"
    GoTo eingabe2
    End If
eingabe3:
    vIntervall = InputBox("Bitte Wert eingeben:", "Intervall")
    If Not IsNumeric(vIntervall) Then
    MsgBox "Dies ist kein gültiges Intervall!", vbExclamation, "Zahl"
    GoTo eingabe3
    End If
    Intervall = vIntervall
    If Intervall = 0 Or Zielspalte * Intervall > 256 Then
    MsgBox "Das Intervall liegt ausserhalb des gültigen Bereichs!"
    GoTo eingabe3
    End If
    MsgBox "Quellzeile = " & Quellzeile & ", Zielpalte = " & Zielspalte & ", Intervall = " & _
    Intervall, vbOKOnly, "Verknüpfungen einfügen"
    Cells(1, Zielspalte).Value = _
"=Tabelle1!" & Worksheets("Tabelle1").Cells(Quellzeile, 1).Address
    i = 255
    For n = 1 To i
    If n * Intervall > i Then
    Exit For
    End If
    Cells(1 + n, Zielspalte).Value = _
"=Tabelle1!" & Worksheets("Tabelle1").Cells(Quellzeile, 1 + n * Intervall).Address
    Next n
End Sub


...könnte funzen, falls du dich noch mal hier her "verirrst" ;-)

Gruss
Harry


Bild


Betrifft: AW: Transponieren mit Verknüpfung per VBA von: Janine
Geschrieben am: 15.04.2005 15:56:02

Hallo Harry,

ich muss mich bei Dir echt entschuldigen. Ich habe irgendwie nicht ausdrücken können, was ich wollte und war leider ein paar Tage nicht am Computer.

Im Endeffekt habe ich nur folgende total simple Lösung gesucht:



Sub Transponieren()
j = 3
For i = 16 To 300
    
    tabelle2.Cells(j, 4).Formula = "=tabelle1!" & Cells(348, i).Address(False, False)
    
    i = i + 3
    j = j + 1
Next i
End Sub


Mit dem "manuell editieren" meinte ich nur, dass ich hinterher den Code selber ändern kann.
Dennoch danke, für Deine viele Mühe! Ich finde es super, dass sich hier Leute wirklich intensivst mit den Problemen anderer beschäftigen!!!


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Spalten und Zeilenselektion in Pivottabelle"