Registriert seit: 10.11.2016
Version(en): Office 2013
Hallo zusammen,
ich habe eine Excel Tabelle in der Daten in einer Zelle durch Zeilenumbruch voneinander getrennt sind. Dies sieht wie folgt aus:
Staubsauger: 234235
Lokalisierung: Deutschland
Mit Beutel
Nun möchte ich mit einem Excel Makro die erste Zeile in der Zelle löschen, wobei die Zeichenanzahl variieren kann.
Bis dato schaffe ich es nur Zeilen mit gleicher Länge zuverlässig zu löschen.
Wäre super wenn Ihr einen Tipp habt.
Viele Grüße
Moritz
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Moritz,
Sub ErsteZeileInZelleWeg()
Dim rngZ As Range
For Each rngZ In Selection.Cells
rngZ.Value = Mid(rngZ.Value, InStr(1, rngZ.Value, Chr(10)) + 1)
Next rngZ
End Sub
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• kosmoritz
Registriert seit: 10.11.2016
Version(en): Office 2013
Vielen Dank Uwe, das funktioniert schon mal super.
Hättest du noch eine Idee den Code performanter zu machen?
Bei meinem Excel Dokument welches ca. 1000 Zeilen enthält, benötigt die Ausführung des Codes fast 2 Minuten.
Viele Grüße
Moritz
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Moritz,
probiere mal so:
Sub ErsteZeileInZelleWeg()
Dim lngX As Long, lngY As Long
Dim varT As Variant
varT = Selection.Value
For lngX = 1 To UBound(varT, 1)
For lngY = 1 To UBound(varT, 2)
varT(lngX, lngY) = Mid(varT(lngX, lngY), InStr(1, varT(lngX, lngY), Chr(10)) + 1)
Next lngY
Next lngX
Selection = varT
End Sub
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• kosmoritz
Registriert seit: 10.11.2016
Version(en): Office 2013
Wow, jetzt läuft das richtig schnell, Dankeschön !
Schönes Wochenende und viele Grüße.
Moritz
Registriert seit: 10.11.2016
Version(en): Office 2013
Mein Excel Dokument hat sich etwas verändert, aufgrund dessen die Funktion nicht mehr richtig funktioniert.
Besteht die Möglichkeit den Algorithmus nur auf eine Spalte zu beschränken?
VG
Moritz
Registriert seit: 29.09.2015
Version(en): 2030,5
15.12.2016, 18:27
(Dieser Beitrag wurde zuletzt bearbeitet: 15.12.2016, 18:28 von snb.)
Code:
Sub M_snb()
Columns(1).Replace "*" & vbLf, ""
End Sub
Registriert seit: 10.11.2016
Version(en): Office 2013
Danke schon mal.
Leider löscht dein Code mir den kompletten Zellinhalt, abgesehen von der letzten Zeile.
Ich würde aber nur gerne die erste Zeile löschen + alle Zeilenumbrüche entfernen.
Das mit den Zeilenumbrüchen konnte ich hiermit schon mal voranbringen:
Sub M_snb()
Columns(1).Replace vbLf, ","
End Sub
VG
Moritz
Registriert seit: 29.09.2015
Version(en): 2030,5
Geht so:
Code:
Sub M_snb()
[B1:B100] = [index(substitute(A1:A100,char(10),"#",1),)]
Columns(2).Replace "*#", ""
End Sub
Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:1 Nutzer sagt Danke an snb für diesen Beitrag 28
• kosmoritz
Registriert seit: 10.11.2016
Version(en): Office 2013
Dankeschön! Hat dann mit meiner Anpassung funktioniert.
[E1:E1500] = [index(substitute(E1:E1500,char(10),"#",1),)]
Columns(5).Replace "*#", ""
Schönes Wochenende
Moritz