Registriert seit: 10.11.2017
Version(en): Office 2016
Hallo zusammen,
ich habe mal wieder ein Problem, welches ich selbst nicht zu lösen weiß. Habe bisher etwas gegoogelt und dabei wurden immer wieder VBA-Makros für ähnliche Probleme aufgezeigt - damit habe ich aber noch überhaupt keine Erfahrung gesammelt außer mit dem Makro-Recorder.
Und zwar habe ich eine Liste mit ca. 10.000 Datensätzen. In der Spalte B habe ich Werte (zB 2641510,2641510, 2641610, 2641810, 2641820, 261820, etc.). Und nun möchte ich, dass jedes mal eine Leerzeile eingefügt wird, sobald sich der Wert in Spalte B ändert (also die Werte sollen immer von einer Leerzeile getrennt werden). Dabei kann jeder Wert unterschiedlich oft vorkommen.
Habt ihr dafür eine Idee? Ich hatte auch schon an eine WENN()-Formel gedacht, aber wie könnte man eine Leerzeile einfügen?
Ich bin wirklich ratlos diesmal...
Viele Grüße
Felix
Registriert seit: 13.04.2014
Version(en): 365
Hi,
das geht wohl nur mit VBA.
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Registriert seit: 17.08.2015
Version(en): 19
Hallo,
schreibe in die Codeseite der Tabelle(!) folgenden Code:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
Rows(Target.Row + 1).EntireRow.Insert
End If
End Sub
Aber Achtung!
das File muss jetzt zwingend die Ext. *.xlsm haben.
Sonst wird der Code nicht gepeichert.
Grüße aus Nürnberg
Armin
Ich benutze WIN 10 (64bit) und Office 19 (32bit)
Folgende(r) 1 Nutzer sagt Danke an EbyAS für diesen Beitrag:1 Nutzer sagt Danke an EbyAS für diesen Beitrag 28
• felippo
Registriert seit: 10.11.2017
Version(en): Office 2016
31.01.2018, 12:33
(Dieser Beitrag wurde zuletzt bearbeitet: 31.01.2018, 12:33 von felippo.)
Hallo Armin,
danke für die schnelle Antwort. Aber wie kann ich den Code jetzt ausführen? Muss ich dazu ein Makro erstellen? Das muss ich doch dann auch irgendwie dem Code zuordnen, oder?
Edit:
Habe das Zellformat geändert und daraufhin wurde der Code ausgeführt. Dabei trat aber ein "Fehler beim Kompilieren" auf: Sub oder Function nicht definiert.
Gruß
Felix
Registriert seit: 13.04.2014
Version(en): 365
Hi,
der Code taugt für Deine Anforderung nichts!
Code:
Sub Zeilen()
Dim loLetzte as long
dim loCo as long
loLetzte=cells(rows.count,2).end(xlup).row
For loCo=loLetzte to 2 step -1
if Cells(loCo,2)<> cells(loCo-1,2) then Rows(loco).entirerow.insert shift:=xldown
next
End sub
Hinter das Tabellenblatt und mit Alt+F8 aufrufen
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Registriert seit: 16.08.2017
Version(en): 2007 / 2010 / Web
Hi
wenn VBA dir nicht liegt dann hier mal mit Formel.
____|___A__|__B__|___C___|D|__E__|__F__|___G___|K|
1|Name |werte|Bereich| |Name |werte|Bereich| |
2|Name1 | 2|A | |Name1| 2|A | |
3|Name2 | 2|C | |Name2| | | |
4|Name3 | 4|B | | | | | |
5|Name4 | 4|B | | | | | |
6|Name5 | 4|A | | | | | |
7|Name6 | 4|C | | | | | |
8|Name7 | 1|D | | | | | |
9|Name8 | 1|D | | | | | |
10|Name9 | 1|D | | | | | |
11|Name10| 3|A | | | | | |
12|Name11| 3|B | | | | | |
13|Name12| 6|B | | | | | |
14|Name13| 8|C | | | | | |
15|Name14| 8|C | | | | | |
16|Name15| 8|D | | | | | |
17|Name16| 5|E | | | | | |
18|Name17| 7|B | | | | | |
19|Name18| 9|A | | | | | |
20|Name19| 9|A | | | | | |
E2 =A2
F2 =B2
G2 =C2
E3 =WENN($F2="";INDEX(A:A;ZEILE(A3)-ANZAHLLEEREZELLEN($F$2:$F2););WENN(INDEX($B:$B;ZEILE(A2)-ANZAHLLEEREZELLEN($F$2:$F2);)<>INDEX($B:$B;ZEILE(A3)-ANZAHLLEEREZELLEN($F$2:$F2););"";INDEX(A:A;ZEILE(A3)-ANZAHLLEEREZELLEN($F$2:$F2);)))
E3 nach rechts und unten Kopieren.
Registriert seit: 13.04.2014
Version(en): 365
Hi,
mit Formeln mag das ja für eine Spalte noch funktionieren, aber dann wird es schon problematisch.
Das ginge auch so:
Arbeitsblatt mit dem Namen 'Tabelle1' |
| B | C | D |
2 | 2641510 | | 2641510 |
3 | 2641510 | | 2641510 |
4 | 2641610 | | |
5 | 2641810 | | 2641610 |
6 | 2641820 | | |
7 | 261820 | | 2641810 |
8 | | | |
9 | | | 2641820 |
Zelle | Formel |
D3 | =WENN(D2="";INDEX(B:B;VERWEIS(9;1/(B:B=D1);ZEILE(B:B))+1);WENN(INDEX(B:B;VERGLEICH(D2;B:B;0)+ZÄHLENWENN($D$1:D2;D2))<>D2;"";D2)) |
Verwendete Systemkomponenten: [Windows (32-bit) NT 6.01] MS Excel 2010 |
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg |
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Registriert seit: 10.11.2017
Version(en): Office 2016
Hallo zusammen,
vielen Dank für eure Hilfe!!
Ich habe eine Lösung gefunden und das Problem gelöst. Danke Opa Edgar für den Code und die Ausführung des Codes
Viele Grüße
Felix