Mehrere Zellen markieren und zusammenführen?
Guten Morgen,
ich schlage mich mal wieder mit Excel rum, es fehlt wieder mal eine grundlegende Funktion die eigentlich dabei sein sollte.
Ich möchte eine unbekannte und unbegrenzte Anzahl von Zellen markieren und zusammenfügen. Einfach alle markieren und das Ergebnis der Zusammenführung soll in de zuerst markierten Zelle stehen.
Im Prinzip geht das ja mit diesem schönen kleinen Button, aber nur wenn die Zellen leer sind. Oder es wird alles mit der ersten Zelle überschrieben. Ich möchte aber, dass der Text zusammengefügt wird.
Mit dem Befehl VERKETTEN möchte ich es auch nicht machen da dieser auch zu doof ist (man muss jede Zelle einzeln anklicken und kann sie nicht einfach alle markieren). Bei 100 Zellen macht das keinen Spaß.
Leider bin ich eine absolute VBA-Null und kann mir das nicht selbst schreiben. Hat jemand eine Idee oder gar eine Lösung parat?
Schönen Gruß
Biene
Antwort schreiben
Antwort 1 von hallo666 vom 22.07.2020, 09:02 Options
Vielleicht so.
=C3&" "&D3&" "&E3
Antwort 2 von coros vom 22.07.2020, 09:38 Options
Hallo Biene,
versuche mal nachfolgendes Makro. Das sollte das machen, was Du Dir vorgestellt hast.
Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.
Option Explicit
Sub Summe_Selection()
Dim iRowStart As Integer
Dim iRowEnd As Integer
Dim iRowLen As Integer
Dim iColStart As Integer
Dim iColEnd As Integer
Dim varSumme As Variant
Dim iRow As Integer
Dim iCol As Integer
iRowStart = Range(Selection.Address).Row
iRowEnd = Range(Selection.Address).Row + Selection.Rows.Count - 1
iColStart = Range(Selection.Address).Column
iColEnd = Range(Selection.Address).Column + Selection.Columns.Count - 1
For iRow = iRowStart To iRowEnd
For iCol = iColStart To iColEnd
If IsNumeric(Cells(iRow, iCol)) Then
varSumme = varSumme + Cells(iRow, iCol)
End If
Next
Next
Cells(iRowStart, iColStart) = varSumme
End Sub
Ich hoffe, Du meintest das so.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf
meiner HP in der
Rubrik Anleitungen und dort dann in der
Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
Bei Fragen melde Dich.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 3 von meinTipp vom 22.07.2020, 11:01 Options
Hallo Biene,
eine Alternative zu Olivers Vorschlag.
Diesen Code unter das Tabellenblatt einfügen (Rechtsklick auf den Reiter des Tabellenblattes --> Code anzeigen).
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count = 1 Then strZelle1 = Target.Address
End Sub
Diesen Code in ein normales Modul (z.B. Modul1).
Option Explicit
Public strZelle1 As String
'
Sub selektierte_Zellen_Zusammenfügen()
Dim rg As Range
Dim strZusammen As String
If strZelle1 = "" Then
MsgBox "Zieladresse ist nicht bekannt!"
Exit Sub
End If
strZusammen = ""
'Zusammenfügen mit "," getrennt
For Each rg In Selection
If strZusammen = "" Then
strZusammen = rg.Value
Else
strZusammen = strZusammen & "," & rg.Value
End If
Next rg
Range(strZelle1).Value = strZusammen
End Sub
Wenn du alle Zellen markiert hast so führe selektierte_Zellen_Zusammenfügen() aus.
Du kannst dem Makro ja eine Tastenkombination zuweisen oder über einen Button ansprechen.
Die Reihenfolge des Textes richtet sich aber nicht nach der Reihenfolge der ausgewähten Zellen!
Sie richtet sich nach der Position auf dem Tabellenblatt. Ansonsten wird es wesentlich aufwendiger.
@Oliver
In der Frage stand doch Text zusammenfügen und nicht Summe bilden. Außerdem stand da nichts von einem zusammenhängenden Bereich. Deshalb meine Alternative.
Gruss Rolf
Antwort 4 von Biene84 vom 22.07.2020, 12:25 Options
Hallo Oliver,
danke für die schnelle Rückmeldung. Aber leider hat Rolf recht, es geht um Texte und nicht um Summen.
Schönen Gruß
Sabine
Antwort 5 von Biene84 vom 22.07.2020, 12:27 Options
Hallo Rolf,
das ist glaube ich exakt das was ich suche. Ich habe deine Anleitung befolgt und den einen Code in ein Modul kopiert und den anderen als ein Objekt der Tabelle.
Wenn ich das Makro abspielen möchte kommt aber sofort die Fehlermeldung:
Fehler beim Kompilieren
Variable nicht definiert.
Schönen Gruß
Sabine
Antwort 6 von Biene84 vom 22.07.2020, 12:34 Options
OK, hab's! Ich habe es versehentlich in ein Modul einer anderen Datei geschrieben. Jetzt kann ich es abspielen. Allerdings sagt er, dass die Zieladresse nicht bekannt sei.
Antwort 7 von meinTipp vom 22.07.2020, 12:48 Options
Hallo Sabine,
du musst die Zielzelle erst einmal einzeln anwählen. Dann kannst du den Rest markieren.
Hier
If Target.Count = 1 Then strZelle1 = Target.Address
wird die Zielzelle nur gespeichert, wenn eine einzelne Zelle gewählt wurde. Das ist wegen deiner Forderung
Zitat:
soll in de zuerst markierten Zelle stehen
so gelöst.
Ansonsten ersetze
If strZelle1 = "" Then
MsgBox "Zieladresse ist nicht bekannt!"
Exit Sub
End If
einfach durch
If strZelle1 = "" Then
strZell1=ActiveCell.Address
End If
Gruss Rolf
Antwort 8 von Biene84 vom 22.07.2020, 13:04 Options
PERFEKT !!! DANKE!!!
SCHMATZ