Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
756to760
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
756to760
756to760
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

umbenenung von namen wenn doppelt

umbenenung von namen wenn doppelt
19.04.2006 21:56:34
namen
hallo an alle
ich habe da mal eine frage
ist es möglich wenn ich in einer spalte z.B ab A2
eine namensliste habe und in der verschiedene namen stehen ich diese per vba überprüfen lassen kann und gegebenenfalls hinter den namen ein -1;-2 usw. schreibenlassen kann?
Beispiel:
thomas
otto
katl
otto
karin
thomas
otto
und per vba:
thomas
otto-1
karl
otto-2
karin
thomas
otto-3
das problem ist ich weiß nicht wieviele namen immer vorhanden sind also es variiert immer
mfg
selo

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: umbenenung von namen wenn doppelt
19.04.2006 22:31:38
namen
Hi,
mach dir ne Hilfsspalte mit aufsteigenden Nummern, sortiere die Namen, erweitern um die Nummerierung, sortiern nach Hilfsspalte, Hilfsspalte löschen.
mfg Gerd
AW: umbenenung von namen wenn doppelt
19.04.2006 22:57:27
namen
Hallo hilft dir das weiter ?

Sub neu()
For x = 1 To 7
cb = Cells(x, 1)
For xx = 1 To 7
If Cells(xx, 1) = cb Then
If Cells(xx, 2) = "" Then
f = f + 1
Cells(xx, 2) = Cells(xx, 2) + f
End If
Else
End If
Next
f = 0
Next
End Sub

Rückmeldung wäre nett gruß Chris
AW: umbenenung von namen wenn doppelt
19.04.2006 23:22:48
namen
Hi,
?, was soll das denn?
mfg Gerd
AW: umbenenung von namen wenn doppelt
19.04.2006 23:43:44
namen
Was verstehst du nicht ?
Macht das was er will nur mit dem einen unterschied es schreibt die Zahlen eine Spalte daneben.
Würde sagen hilfreicher als deine Lösung.
Anzeige
AW: umbenenung von namen wenn doppelt
20.04.2006 00:27:12
namen
Hallo Chris,
mach dir nichts draus. Wir haben alle mal angefangen.
- Da sucht man für einmalige Aktionen nach einem VBA-Code und freut sich, wenn er mit 7 Datensätzen zufriedenstellend funktioniert (lass deinen Code mal über 10.000 Zeilen laufen). Dass das Schreiben des Codes länger dauert als das Problem mit Excel-Bordmitteln zu lösen spielt keine Rolle.
- Auf Option Explicit haben wir keinen Wert gelegt. Geht ja auch ohne.
- "für sich selbst sprechende" Variablennamen lass ich mal außen vor.
- Deine If Then - Aktion - Else - nix - End If Konstruktion ist viel besser, als das, was man hier auch liest: If Then - nix - Else - Aktion - End If.
Wir haben alle mal mit VBA angefangen - Gerd's Irritation kann ich aber schon verstehen.
Gruß
Peter
Anzeige
AW: umbenenung von namen wenn doppelt
19.04.2006 23:27:25
namen
hallo
das problem das ich habe ist das ich tabellen mit umfangreichen berechnungen sowie auswahl mittels spinbuttom usw. habe am ende werden diagramme ausgegeben die sich auf die namen beziehen. diese namen sind ziemlich umfangreich und mir ist aufgefallen das wenn ich bei einem bestimmten berechnungsschritt einen namen anwähle ein ähnlicher bearbeitet wird und da ich wenn ich dies bearbeiten will alles bearbeiten müßte dachte ich das der einfachste wahrscheinlich der ist das ich die gleichen namen umbenenne in -1, -2 etc.
mfg
selo
AW: umbenenung von namen wenn doppelt
19.04.2006 23:57:30
namen
hallo chris
der code ist ok wie kann ich es hinbekommen das in der spalte zu dem namen die nr. hinzukommt anstatt in die zelle daneben.
ansonsten funktioniert es super ich habe es sogar mit verschiedenen doppel einträgen versucht und er nummeriert immer neu.
mfg
selo
Anzeige
AW: umbenenung von namen wenn doppelt
20.04.2006 00:11:18
namen
Hallo selo was hälst du davon ?
Ist der einfachste weg.

Sub neu()
For x = 1 To 7
cb = Cells(x, 1)
For xx = 1 To 7
If Cells(xx, 1) = cb Then
If Cells(xx, 2) = "" Then
f = f + 1
Cells(xx, 2) = Cells(xx, 2) + f
End If
Else
End If
Next
f = 0
Next
'zusammenfügen
For x = 1 To 7 ' kannst ja Variabl machen
Cells(x, 1) = Cells(x, 1) & "-" & Cells(x, 2)
Next
End Sub

AW: umbenenung von namen wenn doppelt
20.04.2006 00:21:30
namen
hallo chris
es funktioniert super
ich muß mir jetzt nur ausdenken wie ich es anstelle mit der hilfsspalte!
muß irgendwie die hilfsspalte aufmachen lassen und nach dem code die Hilfsspalte wieder löschen lassen
mfg
selo
Anzeige
AW: umbenenung von namen wenn doppelt
20.04.2006 00:18:35
namen
Oder so ganz ohne Hilfsspalte.
Dim vars(10)

Sub neu()
For x = 1 To 7
cb = Cells(x, 1)
For xx = 1 To 7
If Cells(xx, 1) = cb Then
If vars(xx) = "" Then
f = f + 1
vars(xx) = vars(xx) + f
End If
Else
End If
Next
f = 0
Next
For x = 1 To 7
Cells(x, 1) = Cells(x, 1) & " - " & vars(x)
Next
End Sub

Rückmeldung ob erfolgreich wäre nett.
AW: umbenenung von namen wenn doppelt
20.04.2006 00:28:54
namen
hallo chris
bekomme fehlermeldung 9
index außerhalb des gültigen bereichs

Sub neu()
Dim vars(10)
For x = 1 To 7
cb = Cells(x, 1)
For xx = 1 To 7
If Cells(xx, 1) = cb Then
If vars(xx) = "" Then
f = f + 1
vars(xx) = vars(xx) + f
End If
Else
End If
Next
f = 0
Next
For x = 1 To 7
Cells(x, 1) = Cells(x, 1) & " - " & vars(x)
Next
End Sub

Anzeige
AW: umbenenung von namen wenn doppelt
20.04.2006 06:36:21
namen
Hi Selo,
probiers mal mit
Option Explicit
Sub Namen_eindeutig()
Dim anzZ&, zAnf&, zVgl&, erg%
anzZ = Cells(Rows.Count, 1).End(xlUp).Row
For zAnf = 1 To anzZ - 1
erg = 1
For zVgl = zAnf + 1 To anzZ
If Cells(zAnf, 1) = Cells(zVgl, 1) Then
erg = erg + 1
Cells(zVgl, 1) = Cells(zVgl, 1) & "-" & CStr(erg)
End If
Next zVgl
Next zAnf
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: umbenenung von namen wenn doppelt
20.04.2006 08:02:58
namen
Hi Selo,
... und wenn's sehr viele Namen sind, geht's so schneller:
Option Explicit
Sub Namen_eindeutig_2()
Dim anzZ&, zAnf&, zVgl&, erg%
anzZ = Cells(Rows.Count, 1).End(xlUp).Row
Columns(1).Insert Shift:=xlToRight
Selection.NumberFormat = "0"
Range("A1").Select
Range(Cells(1, 1), Cells(anzZ, 1)).FormulaR1C1 = "=ROW()"
Range(Cells(1, 1), Cells(anzZ, 1)).Copy
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Columns("A:B").Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
For zAnf = 1 To anzZ - 1
erg = 1
zVgl = 1
While Cells(zAnf, 2) = Cells(zAnf + zVgl, 2) And zAnf + zVgl <= anzZ
erg = erg + 1
Cells(zAnf + zVgl, 2) = Cells(zAnf + zVgl, 2) & "-" & CStr(erg)
zVgl = zVgl + 1
Wend
zAnf = zAnf + zVgl - 1
Next zAnf
Columns("A:B").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Columns(1).Delete
Cells(1, 1).Select
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: umbenenung von namen wenn doppelt
20.04.2006 08:17:50
namen
Hi Selo,
noch eine kleine Korrektur:
Beim ersten Sort (nach Spalte B) sollte "MatchCase:=True" statt "MatchCase:=False" stehen. Dann läuft's auch bei unterschiedlicher Groß-/Kleinschreibung von Namen richtig.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: umbenenung von namen wenn doppelt
20.04.2006 09:23:46
namen
hallo Erich habe es umwandeln können für die spalte b ab b2 mit
Option Explicit

Sub Namen_eindeutig_2()
Dim anzZ&, zAnf&, zVgl&, erg%
anzZ = Cells(Rows.Count, 2).End(xlUp).Row
Columns(1).Insert Shift:=xlToRight
Selection.NumberFormat = "0"
Range("b2").Select
Range(Cells(2, 2), Cells(anzZ, 2)).FormulaR1C1 = "=ROW()-1"
Range(Cells(2, 2), Cells(anzZ, 2)).Copy
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Columns("b:c").Sort Key1:=Range("c2"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=false, Orientation:=xlTopToBottom + 1, _
DataOption1:=xlSortNormal
For zAnf = 1 To anzZ - 1
erg = 1
zVgl = 1
While Cells(zAnf, 3) = Cells(zAnf + zVgl, 3) And zAnf + zVgl <= anzZ
erg = erg + 1
Cells(zAnf + zVgl, 3) = Cells(zAnf + zVgl, 3) & "-" & CStr(erg)
zVgl = zVgl + 1
Wend
zAnf = zAnf + zVgl - 1
Next zAnf
Columns("b:c").Sort Key1:=Range("b2"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=false, Orientation:=xlTopToBottom + 1, _
DataOption1:=xlSortNormal
Columns(2).Delete
Cells(2, 2).Select
End Sub

jedoch wenn ich das MatchCase:=false auf true setze ändert sich nichts es erkennt groß und kleinschreibung nicht.
gruß
selo
Anzeige
AW: umbenenung von namen wenn doppelt
20.04.2006 08:35:20
namen
hallo Erich das mit den vielen namen funktioniert super danke dir
habe nur probleme es umzustellen da meine tabelle mit den namen bei B2 erst anfängt(in B1 steht der Name der Tabelle). Habe es versucht umzuändern jedoch bekomme ich es nicht hin.
Option Explicit

Sub Namen_eindeutig_2()
Dim anzZ&, zAnf&, zVgl&, erg%
anzZ = Cells(Rows.Count, 1).End(xlUp).Row
Columns(1).Insert Shift:=xlToRight
Selection.NumberFormat = "0"
Range("A1").Select
Range(Cells(1, 1), Cells(anzZ, 1)).FormulaR1C1 = "=ROW()"
Range(Cells(1, 1), Cells(anzZ, 1)).Copy
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Columns("A:B").Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
For zAnf = 1 To anzZ - 1
erg = 1
zVgl = 1
While Cells(zAnf, 2) = Cells(zAnf + zVgl, 2) And zAnf + zVgl <= anzZ
erg = erg + 1
Cells(zAnf + zVgl, 2) = Cells(zAnf + zVgl, 2) & "-" & CStr(erg)
zVgl = zVgl + 1
Wend
zAnf = zAnf + zVgl - 1
Next zAnf
Columns("A:B").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Columns(1).Delete
Cells(1, 1).Select
End Sub

Danke auch allen anderen die mir versucht haben zu helfen
gruß
selo
Anzeige
AW: umbenenung von namen wenn doppelt
20.04.2006 09:52:26
namen
hallo
habe mich zu früh gefreut wenn ich die kontrolle für spalte B machen lasse funktioniert es nicht recht.ich habe mal einen namen über 8 zeilen gezogen und einen anderen namen dazwischen geändert. beim umbenennen fängt er ab dem geänderten namen wieder neu zu numerieren. Bei Erichs für spalte A numeriert er durch egeal ob dazwischen ein anderer name steht.
so sieht es aus
Hgh
hghg
selo
selo
selo
erich
selo
selo
selo
hiraus wird bei mir
Hgh
hghg
selo
selo-2
selo-3
erich
selo
selo-2
selo-3
und bei Erichs:
Hgh
hghg
selo
selo-2
selo-3
erich
selo-4
selo-5
selo-6
weiß jemand vielleicht was ich da falsch gemacht habe?
gruß
selo
Anzeige
AW: umbenenung von namen wenn doppelt
20.04.2006 10:04:56
namen
Hallo Selo,
so gehts auch mit Spaltenüberschrift und in Spalte B:
Option Explicit
Sub Namen_eindeutig_3()
Dim anzZ&, rg As Range, zAnf&, zVgl&, erg%
Const Spal = 2
Const Head = xlYes
anzZ = Cells(Rows.Count, Spal).End(xlUp).Row
Columns(Spal).Insert Shift:=xlToRight
Columns(Spal).NumberFormat = "0"
Range(Cells(1, Spal), Cells(anzZ, Spal)).FormulaR1C1 = "=ROW()"
Range(Cells(1, Spal), Cells(anzZ, Spal)).Copy
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
If Head = xlYes Then Cells(1, Spal) = "Hilf"
Set rg = Range(Columns(Spal), Columns(Spal + 1))
rg.Sort Key1:=rg.Range("B1"), Order1:=xlAscending, Header:=Head, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
For zAnf = 1 - (Head = xlYes) To anzZ - 1
erg = 1
zVgl = 1
While Cells(zAnf, Spal + 1) = Cells(zAnf + zVgl, Spal + 1) And zAnf + zVgl <= anzZ
erg = erg + 1
Cells(zAnf + zVgl, Spal + 1) = Cells(zAnf + zVgl, Spal + 1) & "-" & CStr(erg)
zVgl = zVgl + 1
Wend
zAnf = zAnf + zVgl - 1
Next zAnf
rg.Sort Key1:=rg.Range("A1"), Order1:=xlAscending, Header:=Head, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Columns(Spal).Delete
Cells(1, Spal).Select
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: umbenenung von namen wenn doppelt
20.04.2006 20:54:24
namen
hallo Erich es funktioniert perfekt.
es gibt da eine sache die ich jedoch nicht verstehe:
wenn ich mit der maus eine zelle angeklickt habe numeriert mir der code wenn ich diesen ablaufen lasse noch ab dieser zelle von 1 bis wieviele zeilen vorhanden sind.ist dies gewollt oder was läuft da schief?
ansonsten keine frage läuft perfekt
gruß
selo
AW: umbenenung von namen wenn doppelt
20.04.2006 23:51:10
namen
Hallo Selo,
hast Recht, da war noch ein Scherz drin. In der Zeile
Selection.PasteSpecial Paste:=xlPasteValues
taucht "Selection" auf - und damit werden die Zeilennummern kopiert in einen Bereich ab der zufällig aktiven Zelle. (War ein Relikt aus der Makroaufzeichnung.)
Hier noch mal die ganze Prozedur korrigiert:
Option Explicit
Sub Namen_eindeutig_3()
Dim anzZ&, rg As Range, zAnf&, zVgl&, erg%
Const Spal = 2
Const Head = xlNo
anzZ = Cells(Rows.Count, Spal).End(xlUp).Row
Columns(Spal).Insert Shift:=xlToRight
Columns(Spal).NumberFormat = "0"
With Range(Cells(1, Spal), Cells(anzZ, Spal))
.FormulaR1C1 = "=ROW()"
.Copy
.PasteSpecial Paste:=xlPasteValues
End With
Application.CutCopyMode = False
If Head = xlYes Then Cells(1, Spal) = "Hilf"
Set rg = Range(Columns(Spal), Columns(Spal + 1))
rg.Sort Key1:=rg.Range("B1"), Order1:=xlAscending, Header:=Head, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
For zAnf = 1 - (Head = xlYes) To anzZ - 1
erg = 1
zVgl = 1
While Cells(zAnf, Spal + 1) = Cells(zAnf + zVgl, Spal + 1) And zAnf + zVgl <= anzZ
erg = erg + 1
Cells(zAnf + zVgl, Spal + 1) = Cells(zAnf + zVgl, Spal + 1) & "-" & CStr(erg)
zVgl = zVgl + 1
Wend
zAnf = zAnf + zVgl - 1
Next zAnf
rg.Sort Key1:=rg.Range("A1"), Order1:=xlAscending, Header:=Head, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Columns(Spal).Delete
Cells(1, Spal).Select
End Sub
Sub Namen_eindeutig_2()
Dim anzZ&, zAnf&, zVgl&, erg%
anzZ = Cells(Rows.Count, 1).End(xlUp).Row
Columns(1).Insert Shift:=xlToRight
Selection.NumberFormat = "0"
Range("A1").Select
Range(Cells(1, 1), Cells(anzZ, 1)).FormulaR1C1 = "=ROW()"
Range(Cells(1, 1), Cells(anzZ, 1)).Copy
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Columns("A:B").Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
For zAnf = 1 To anzZ - 1
erg = 1
zVgl = 1
While Cells(zAnf, 2) = Cells(zAnf + zVgl, 2) And zAnf + zVgl <= anzZ
erg = erg + 1
Cells(zAnf + zVgl, 2) = Cells(zAnf + zVgl, 2) & "-" & CStr(erg)
zVgl = zVgl + 1
Wend
zAnf = zAnf + zVgl - 1
Next zAnf
Columns("A:B").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Columns(1).Delete
Cells(1, 1).Select
End Sub
Sub Namen_eindeutig()
Dim anzZ&, zAnf&, zVgl&, erg%
anzZ = Cells(Rows.Count, 1).End(xlUp).Row
For zAnf = 1 To anzZ - 1
erg = 1
For zVgl = zAnf + 1 To anzZ
If Cells(zAnf, 1) = Cells(zVgl, 1) Then
erg = erg + 1
Cells(zVgl, 1) = Cells(zVgl, 1) & "-" & CStr(erg)
End If
Next zVgl
Next zAnf
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Perfekt
21.04.2006 09:21:40
selo
Hallo Erich
es funktioniert einwandfrei
ich danke dir dafür das du deine zeit aufgeopfert hast um mir zu helfen.
vielen vielen dank nochmal
gruß
selo

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige