Text aus Zelle in eine bestimmte andere kopieren

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

Betrifft: Text aus Zelle in eine bestimmte andere kopieren
von: Martin
Geschrieben am: 09.11.2015 11:10:39

Hi Forum,
ich brauche wieder einmal eure Hilfe.
Ich habe in einem Beispiel einen Text in einer Zelle stehen und will diesen per klick auf einen Button in eine andere Zelle kopieren.
Als Beispiel: (Zeilen und Spalten können sich ändern)
- Der zu kopierende Text steht z.B.: in der Zelle A3="Text 1"
- Die zu kopierende Zelle ergibt sich aus einer Zahl die in D3=3 steht
- Ab der Spalte E stehen in der Zeile 1 fortlaufende Zahlen (E1=1; F1=2; G1=3; usw.)
Nach klick soll das Makro die Zahl in der Zelle D3 auslesen und in der entsprechenden Spalte welche die gleiche Zahl in der Zeile 1 hat hinein kopieren. Die Zeile soll dabei die selbe sein wo sich auch der Text und die Zahl befindet (in diesem Beispiel Zeile 3).
In diesem Beispiel ist das Ergebnis: G3="Text 1"
Hier eine Beispieldatei
https://www.herber.de/bbs/user/101328.xlsx
Danke im voraus für eure Hilfe!
LG
Martin

Bild

Betrifft: AW: warum hier nicht eine einfache Formel ? ...
von: ... neopa C
Geschrieben am: 09.11.2015 11:18:27
Hallo Martin,
... in E3: =WENN(SPALTE(A1)=$D3;$A3;"")
und diese nach unten und rechts ziehend kopieren.
Gruß Werner
.. , - ...

Bild

Betrifft: AW: warum hier nicht eine einfache Formel ? ...
von: Martin
Geschrieben am: 09.11.2015 11:25:54
Hallo Werner,
danke für die schnelle Antwort.
Die Lösung habe ich schon versucht. Im richtigen Beispiel sind die Spalten jedoch sehr schmal und der Text kann deutlich länger sein. Wenn ich die Formel allen Zellen stehen habe wird der Text leider nicht ausgeschrieben.
Danke für deine Hilfe und lg
Martin

Bild

Betrifft: AW: noch offen
von: Martin
Geschrieben am: 09.11.2015 11:36:57
hab vergessen den Haken zu setzen :(

Bild

Betrifft: AW: die Ergebnisweerte sind schon korrekt ...
von: ... neopa C
Geschrieben am: 09.11.2015 11:50:41
Hallo Martin,
... nur möglicherweise nicht gleich vollständig zu sehen, dazu ist es doch nur notwendig, entweder die Spaltenbreite mit einem Mausklick anzupassen oder den Zellen ein Zellenumbruchformat zu zuordnen und dann evtl. zusätzlich die Zeilenhöhe noch anzupassen.
Gruß Werner
.. , - ...

Bild

Betrifft: AW:Werte korrekt, jedoch hier nicht zu realisieren
von: Martin
Geschrieben am: 09.11.2015 11:58:27
Hi Werner,
danke dir! Ich bin mir über diese Möglichkeiten bewusst. Allerdings will ich das nicht, da dadurch das komplette Layout der Mappe beschädigt wird.
Die einzelnen Spalten stellen Monate über mehrere Jahre da. Wenn ich da jetzt eine Spalte so erweitere, dass der Text platz hat, ist der eine Monat gleich groß wie die restlichen Monate der ganzen Abbildung zusammen. Zum zweiten würde ich mit dem Zeilenumbruch gerade mal ein paar Buchstaben pro Zeile lesbar haben, deshalb ist auch dies keine Alternative. Die höhe der Zeile darf ebenso nicht verändert werden.
Es muss in meinen Augen eine VBA Lösung sein.
LG
Martin

Bild

Betrifft: Spaltenbreite. Nochmal von vorn!
von: EtoPHG
Geschrieben am: 09.11.2015 11:53:55
Hallo Martin,
Kannst du nochmal deine Anforderung genau beschreiben?
Soll der Text aus Spalte A nun in der Zielzelle stehen, oder nur im Kommentar der Zielzelle?
Klar siehst du den Text nicht mehr wenn die Zellen rechts davon füllst. Ab was willst Du? Unlesbar kleinen Text, einen Kommentar, einen lesbaren Text in genügend breiten Spalten oder ... wat?
Gruess Hansueli

Bild

Betrifft: AW: Spaltenbreite. Nochmal von vorn!
von: Martin
Geschrieben am: 09.11.2015 12:04:40
Hi Hansueli, danke für deine Hilfe!
von meinem Beispiel:
Ich möchte das der Text von A3 in G3 steht und zwar so als ob ich ihn da mit Hand rein geschrieben hätte.
Die restlichen Zellen sollen leer sein.
Die Spaltenbreite darf sich nicht ändern
Die Zeilenhöhe darf sich nicht ändern
Der Text soll kein Kommentar sein, sondern normaler - gut lesbarer Text
Danke und lg
Martin

Bild

Betrifft: AW: Spaltenbreite. Nochmal von vorn!
von: Martin
Geschrieben am: 09.11.2015 12:07:08
Achso...
das Kommentar aus meinem Beispiel war nur als Info für euch. Ich verstehe jetzt warum das verwirrt hat.
Also kein Kommentar, nur plain Text

Bild

Betrifft: Vergiss es ganz einfach!
von: EtoPHG
Geschrieben am: 09.11.2015 12:10:28
Hallo Martin,
Was zum Teufel stellst du dir vor, was VBA da zaubern könnte. In dem kleinen Feldchen von ca. 5 x 5 mm kann nun mal dein Text nicht untergebracht werden, ohne das du eine Feldelektronenmikroskop zum Lesen brauchst. Wenn du keine Formel/Darstellungsformat Lösung findest, dann kannst du auch VBA streichen!
Gruess Hansueli

Bild

Betrifft: AW: das nutze Format "an Zellgröße anpassen" owT
von: ... neopa C
Geschrieben am: 09.11.2015 12:09:23
Gruß Werner
.. , - ...

Bild

Betrifft: AW: ich meinte natürlich: "da nutze..." und ...
von: ... neopa C
Geschrieben am: 09.11.2015 12:14:34
Hallo Martin,
... eine andere Lösung sehe ich bei Deinen Bedingungsvorgaben nicht, auch nicht mit VBA (außer dass dann dort in den restlichen Zellen keine Formel mit dem Formelergebnis "" steht.
Gruß Werner
.. , - ...

Bild

Betrifft: AW: das nutze Format "an Zellgröße anpassen" owT
von: Martin
Geschrieben am: 09.11.2015 12:18:22
Hallo nochmal.
Ich glaube ihr versteht mich falsch, oder ich drücke mich falsch aus...
Der Text kann ja ruhig über mehrere Zellen gehen, nur funktioniert das nicht mit einer Formel...
Wenn ich es manuell mache würde es so sein:
Klick A3 - Strg+C - Klick G3 (Oder entsprechende Zelle) - Strg+V
Hier nochmal eine Beispieldatei mit zwei Tabellenblättern. einmal das Ursprüngliche Blatt und als weiteres Blatt so wie das Ergebnis sein soll:
https://www.herber.de/bbs/user/101331.xlsx
Danke nochmal und LG

Bild

Betrifft: AW: ok, wenn so, dann wirklich nur mit VBA owT
von: ... neopa C
Geschrieben am: 09.11.2015 12:21:00
Gruß Werner
.. , - ...

Bild

Betrifft: AW: hab wohl falsch erklärt...
von: Martin
Geschrieben am: 09.11.2015 12:23:29
Das sehe ich eben auch so... :)
Danke trotzdem für deine Hilfe!

Bild

Betrifft: allerdings...
von: EtoPHG
Geschrieben am: 09.11.2015 13:27:08
Hallo Martin,
Warum du das nicht in deiner ersten Datei erklären konntest, bleibt mir schleierhaft.
Diesen Code in das Tabellenblatt:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim lLastCol As Long
    Dim rC As Range
    
    If Intersect(Target, Range("A:A,D:D")) Is Nothing Or _
       Target.Row < 3 Then Exit Sub
    lLastCol = Cells(1, Columns.Count).End(xlToLeft).Column
    Application.EnableEvents = False
    For Each rC In Intersect(Target, Range("A:A,D:D"))
        Range(Cells(rC.Row, 5), Cells(rC.Row, lLastCol)).ClearContents
        Cells(rC.Row, 4 + Cells(rC.Row, 4).Value) = Cells(rC.Row, 1).Text
    Next rC
    Application.EnableEvents = True
End Sub
Gruess Hansueli

Bild

Betrifft: AW: allerdings...
von: Martin
Geschrieben am: 09.11.2015 13:39:34
Perfekt! Danke Hansueli!
Ich dachte ich hätte mich klar ausgedrückt. Werde es mir das nächste mal aber zu Herzen nehmen und versuchen deutlicher zu erklären :)
Danke nochmal und lg
Martin

Bild

Betrifft: leider alles andere als perfekt...
von: EtoPHG
Geschrieben am: 09.11.2015 13:59:04
Hallo Martin,
Wenn die Zielspalte gelöscht oder noch nicht vorhanden ist, verursacht obiger Vorschlag einen Fehler, also ersetze den Code besser durch diesen:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim lLastCol As Long, lTargetCol As Long
    Dim rC As Range
    
    If Intersect(Target, Range("A:A,D:D")) Is Nothing Or _
       Target.Row < 3 Then Exit Sub
    lLastCol = Cells(1, Columns.Count).End(xlToLeft).Column
    lTargetCol = Cells(Target.Row, 4)
    If lTargetCol < 1 Or lTargetCol > Val(Cells(1, Columns.Count).End(xlToLeft)) Then
        MsgBox "Zielspalte in D undefiniert oder ausserhalb des Bereichs!", vbExclamation
        Exit Sub
    End If
    Application.EnableEvents = False
    For Each rC In Intersect(Target, Range("A:A,D:D"))
        Range(Cells(rC.Row, 5), Cells(rC.Row, lLastCol)).ClearContents
        Cells(rC.Row, lTargetCol + 4) = Cells(rC.Row, 1).Text
    Next rC
    Application.EnableEvents = True
End Sub
Gruess Hansueli

Bild

Betrifft: AW: leider alles andere als perfekt...
von: Martin
Geschrieben am: 09.11.2015 15:08:36
Hallo Hansueli!
Nochmal vielen danke für deine Hilfe!
Ich habe etwas Zeit gebraucht um zu verstehen was der Code mach, habe es aber jetzt geschafft ihn in meine Mappe einzubauen (Habe andere Spalten verwendet als im Beispiel). Es funktioniert jetzt soweit.
Das einzige Problem das ich noch habe ist, dass die Zahlen in der Spalte D durch eine Formel von einem anderen Tabellenblatt übernommen werden. Wenn ich die Werte jetzt im zweiten Tabellenblatt ändere, passiert in dem Fall logischerweise nichts.
Wenn ich die Formel neu eingebe (Doppelklick in die Zelle&Enter) dann funkioniert es. Die Texte im Beispiel müssen nicht sofort bei Eingabe in die Zelle geschrieben werden, sondern erst wenn ich das Blatt aktiviere (Kann auch eine Schaltfläche sein)
Ich habe das mit dem Rekorder aufgenommen und folgendermaßen eingebaut:

Private Sub Worksheet_Activate()
    Range("B14").Select
    ActiveCell.FormulaR1C1 = "=Berechnung!R[14]C[6]"
    Range("B16").Select
    ActiveCell.FormulaR1C1 = "=Berechnung!R[13]C[6]"
    Range("B18").Select
    ActiveCell.FormulaR1C1 = "=Berechnung!R[12]C[6]"
    Range("B20").Select
    ActiveCell.FormulaR1C1 = "=Berechnung!R[11]C[6]"
    Range("B21").Select
End Sub
Gibt es da vielleicht eine elegantere Lösung dafür? R1C1 hat der Rekorder gemacht. Ich arbeite normalerweise mit A1 Werten...
Danke nochmal und lg
Martin

Bild

Betrifft: gar nix perfekt deine Problembeschreibung
von: EtoPHG
Geschrieben am: 09.11.2015 16:14:12
Hallo Peter,
Dieser aufgezeichnete Code nützt mir gar nix, da keine stringenten Regeln daraus abzuleiten sind.
Deine Problembeschreibung erweitert sich mit jedem Lösungsvorschlag.
Deine Beispielmappe hat ein anderen Aufbau, wie dein Original.
Mein Vorschlag beruht auf einer manuellen Änderung der Zellinhalte.
Ein Vorschlag für einen Änderung von Berechnungsresultaten würde komplett anders aussehen, aber dafür wäre der genaue Aufbau der Datei und Blätter, inkl. der Formeln und manuell manipulierter Bereiche, welche die Resultate der Formeln beeinflussen, notwendig.
So kann ich dir keine Lösung anbieten.
Gruess Hansueli

Bild

Betrifft: AW: nochmal auf Anfang
von: Martin
Geschrieben am: 09.11.2015 17:19:39
Hi Hansueli,
sorry, ich dachte das macht keinen Unterschied. Ich möchte den Code auch verstehen und nicht nur Copy&Paste und gut. Aus diesem Grund mach ich meine Beispiele auch nicht immer exakt gleich wie das Original ist. Tut mir leid, dass du in dem Fall damit mehr oder weniger umsonst arbeit hattest.
Ich habe jetzt nochmal eine Beispieldatei gemacht. Alles was zu meinem Problem gehört, ist nun genau so wie im Original.
https://www.herber.de/bbs/user/101359.xlsx
Es gibt das Tabellenblatt Eingabe wo alles rein geschrieben wird und das Blatt Ausgabe wo nur die Anzeige der Werte passieren soll.
Danke nochmal und lg
Martin

Bild

Betrifft: Farbbalken erstellen
von: Peter Kloßek
Geschrieben am: 10.11.2015 22:17:13
Hallo Martin,
ich verfolge schon eine Zeitlang Deinen Thread. Die Problemstellung ist heikel, und es findet sich (bis jetzt) niemand, eine Lösung zu erarbeiten. Interessehalber habe ich mal mit meinem "alten" Excel2007 eine Lösung erarbeitet, in der Hoffnung, dass auf Deinem "modernen" System die beigefügte Datei funktioniert. Die Monate "von" und "bis" lassen sich durch einfache Umrechnung den Spaltennummern zuordnen. Diese kann man durch eine Funktion in Spaltenbuchstaben umwandeln. Hinzu kommt noch die Zeilennummer, die ich durch eine Formel ermittle. Schwierig erwies sich das Einfügen der Leerzeilen in der Auswertung. In meiner Lösung benötige ich etliche Regiezeilen, die ich jeweils im oberen Teil der Tabellen untergebracht habe. Du kannst sie aus- und einblenden.
Hier nun meine Datei:
https://www.herber.de/bbs/user/101396.xlsm
Bitte zunächst mal ausprobieren, ob es bei Dir klappt. Falls ja und Du gerne Erläuterungen zu den Makrobefehlen hättest, gebe bitte Nachricht. Ich melde mich dann nocheinmal.
Mit freundlichem Gruß
Peter Kloßek

Bild

Betrifft: AW: Farbbalken erstellen
von: Martin
Geschrieben am: 11.11.2015 14:26:29
Hallo Peter!
das ist nicht genau das was ich suche aber danke trotzdem vielmals für deine Hilfe!
lg
Martin

Bild

Betrifft: AW: nochmal auf Anfang
von: EtoPHG
Geschrieben am: 11.11.2015 10:09:52
Hallo Martin,
Diesen Code in das Tabellenblatt "Eingabe"

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rC As Range
    If Intersect(Target, Range(Cells(8, 3), Cells(Rows.Count, 3).End(xlUp))) Is Nothing _
    Then Exit Sub
    With Worksheets("Auswertung")
        For Each rC In Intersect(Target, Range(Cells(8, 3), Cells(Rows.Count, 3).End(xlUp)))
            If rC > 0 Then
                .Range(.Cells(Target.Row * 2 - 2, 10), _
                       .Cells(Target.Row * 2 - 2, .Columns.Count)).ClearContents
                .Cells(Target.Row * 2 - 2, Target + 9) = rC.Offset(, -1)
            End If
        Next rC
    End With
End Sub

Gruess Hansueli

Bild

Betrifft: AW: jetzt ist es aber perfekt!
von: Martin
Geschrieben am: 11.11.2015 14:30:20
Hi Hansueli!
Danke dir! Genau das ist es was ich brauche. Ich habe es jetzt zwar nur schnell getestet, werde aber erst Anfang nächster Woche dazu kommen es im Original einzubauen.
Ich hoffe ich darf mich nochmal melden sollte ich dann noch Fragen haben.
Vielen Danke nochmal und lg
Martin

Bild

Betrifft: AW: jetzt ist es aber perfekt mit Fehler!
von: EtoPHG
Geschrieben am: 11.11.2015 14:50:19
Hallo Martin,
Nimm den richtig gestellten Code:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rC As Range
    If Intersect(Target, Range(Cells(8, 3), Cells(Rows.Count, 3).End(xlUp))) Is Nothing _
    Then Exit Sub
    With Worksheets("Auswertung")
        For Each rC In Intersect(Target, Range(Cells(8, 3), Cells(Rows.Count, 3).End(xlUp)))
            If rC > 0 Then
                .Range(.Cells(rC.Row * 2 - 2, 10), _
                       .Cells(rC.Row * 2 - 2, .Columns.Count)).ClearContents
                .Cells(rC.Row * 2 - 2, rC + 9) = rC.Offset(, -1)
            End If
        Next rC
    End With
End Sub
Gruess Hansueli

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Text aus Zelle in eine bestimmte andere kopieren"