usw.
Wäre schön, wenn Ihr mir da mit einem entsprechenden Makr weiterhelfen
könntet, mit makros habe ich bisher nur sehr wenig zu tun :-)
Gruß
Micha
Mit einem Makro wirst Du da nicht wirklich weiterkommen.
Zur Lösung gibt es mehrere Ansätze. Hier mal einer davon:
Tabelle:
Feld1 Feld2
4578
4578
4578
5689
5689
Function a()
Dim db as DAO.Database
Dim rs as DAO.Recordset
Dim strSQL as String
Dim iCounter as Integer
iCounter = 1
set db = CurrentDB
strSQL = "SELECT DISTINCT Feld2 FROM Tabelle"
Set rs = db.OpenRecordset(strSQL)
While Not rs.EOF
strSQL = "UPDATE Tabelle Set Feld1 = " & iCounter & _
" WHERE Feld2 = " & rs.Fields(0)
db.Execute strSQL, dbFailOnError
iCounter = iCounter + 1
rs.MoveNext
Wend
rs.Close
set rs = Nothing
End Function
Tabelle nun:
Feld1 Feld2
1 4578
1 4578
1 4578
2 5689
3 5689
Über Format(Feld1, "000") kommst zu zu deinem Ergebnis.
Gruß Thomas
Mal angenommen, es geht um Spalte A und B
Function a()
Dim iRow As Integer
Dim iWert As Integer
Dim iCounter as Integer
iRow = 1 ' Startzeile
iCounter = 1
iWert = Cells(iRow, 2)
While Cells(iRow, 2) <> ""
If Cells(iRow, 2) <> iWert Then
iWert = Cells(iRow, 2)
iCounter = iCounter + 1
End If
Cells(iRow, 1) = Format(iCounter, "000")
iRow = iRow + 1
Wend
End Function
So sollte es unter Excel klappen.
sind die Datensätze in Zeilen angeordnet?
Dann nimm doch einfach eine Formel:
=WENN(B2<>B1;MAX($A$1:$A1)+1;$A1)
Viele Grüße
Daniela Messer
Gruß
Micha
"Thomas Kühn" schrieb:
> vielen Dank für die schnelle Hilfe.
> Wo muß ich das den jetzt einfügen ? In den VBA Editor ?
>
Genau dort. Dort kannst Du die Funktion auch mit F5
ausführen.
Danke und Gruß
Micha
"Thomas Kühn" schrieb:
> Hallo Michael,
Gruß
Micha
"Thomas Kühn" schrieb:
> Hallo Michael,
> habe das jetzt als neues Modul in der Arbeitsmappe eingefügt. War das
> richtig ?
Ja
> Wie kommt es dazu, das ich es mit F5 aufrufen kann ?
Kann ich es auch
> manuell aufrufen ?
>
Mit F5 startest Du im VBA Editor die Funktion in der
der Cursor steht. Das ist ziemlich manuell.
> Ist irow der spaltenbezeichner ?
row (engl.) Reihe od. Zeile.
> Es sind bei mir nämlich die Spalten B (wo die Nummerierung vorgenommen
> werden soll) und E wo die Nummern schon stehen.
Function a()
Dim iCol1, iCol2 As Integer
Dim iRow As Integer
Dim iWert As Integer
Dim iCounter as Integer
iCol1 = 2 ' Spalte B
iCol2 = 5 ' Spalte E
iRow = 1 ' Startzeile
iCounter = 1
iWert = Cells(iRow, iCol2)
While Cells(iRow, iCol2) <> ""
If Cells(iRow, iCol2) <> iWert Then
iWert = Cells(iRow, iCol2)
iCounter = iCounter + 1
End If
Cells(iRow, iCol1) = Format(iCounter, "000")
iRow = iRow + 1
Wend
End Function
Gruß Thomas
> sind die Datensätze in Zeilen angeordnet?
> Dann nimm doch einfach eine Formel:
>
> =WENN(B2<>B1;MAX($A$1:$A1)+1;$A1)
Hallo Daniela,
nicht ganz:-(
Unter Berücksichtigung der neuen Situation (Zahlen in Spalte E, Numerierung
in Spalte B):
B1: 1
B2=WENN(E2<>E1;G1+1;G1)
Spalte B als 000 formatieren.
@ Thomas:
Da der OP sich mit Makros wenig auskennt, wäre es m. E. besser, das nicht
als benutzerdefinierte Funktion zu schreiben. Denn wenn er jetzt mal auf
die Idee kommt, die Funktion über den Button "Funktion einfügen" -->
"benutzerdefiniert" zu starten, dann ist die Verwirrung gross.
--
Mit freundlichen Grüssen Eberhard
XP home XL 2000
Eberhard(punkt)W(punkt)Funke(at)t-online.de
gruß
Micha
"Thomas Kühn" schrieb:
> er gibt mir leider eine Typenunverträglichkeit für
> iWert = Cells(iRow, iCol2)
> aus. Was ist das ?
Wahrscheinlich steht irgendwo keine Zahl sondern ein Text.
Versuche es mit
Dim iWert As String
"Thomas Kühn" schrieb: