Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1228to1232
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
Inhaltsverzeichnis

Anstelle Zahl - Buchstabe "hochzählen"

Anstelle Zahl - Buchstabe "hochzählen"
Peter
Guten Tag
Mit der Funktion PNR habe ich bezogen auf eine bestimmte Spalte eine fortlaufende Zählung.
Optional kann ich die ausgeblendeten Zeilen ignorieren.
Nun habe ich versucht, die Funktion umzubauen, dass nicht eine Zahl hochgezählt wird (1,2,3, ...), sondern die Buchstaben - analog der Spaltenbezeichnungen.
Leider bin ich gescheitert.
Wer kann mir weiterhelfen?
Gruss, Peter
https://www.herber.de/bbs/user/76623.xls

Function pNR(dummy As Date, Optional xNull As Long)
'ohne optinales Argument 1 werden ausgeblendete Zellen ignoriert
Dim zNr As Long, sNr As Long, TabName As Worksheet
Set TabName = Application.Caller.Worksheet
With TabName
zNr = Application.Caller.Row
sNr = Application.Caller.Column
Do
zNr = zNr - 1
If zNr = 0 Then Exit Do
If .Rows(zNr).Hidden = False Or xNull = 1 Then
If WorksheetFunction.IsNumber(.Cells(zNr, sNr)) Then Exit Do
End If
Loop
If zNr = 0 Then pNR = 1 Else pNR = .Cells(zNr, sNr) + 1
End With
End Function

AW: Anstelle Zahl - Buchstabe "hochzählen"
15.09.2011 09:48:42
Reinhard
Hallo Peter,
vielleicht so:
If zNr = 0 Then pNr = 1 Else pNr = .Cells(zNr, sNr) + 1
pNr = Chr(64 + pNr)
oder
pNr = Chr(64 + IIf(zNr = 0, 1, .Cells(zNr, sNr) + 1))
Gruß
Reinhard
Spaltenbuchstaben hochzählen
15.09.2011 09:49:37
Erich
Hi Peter,
probier mal

Option Explicit
Function pTxt(dummy As Date, Optional xNull As Long)
'ohne optionales Argument 1 werden ausgeblendete Zellen ignoriert
Dim zNr As Long, sNr As Long
With Application.Caller
zNr = .Row
sNr = .Column
With .Worksheet
Do
zNr = zNr - 1
If zNr = 0 Then Exit Do
If .Rows(zNr).Hidden = False Or xNull = 1 Then
If WorksheetFunction.IsText(.Cells(zNr, sNr)) Then Exit Do
End If
Loop
If zNr = 0 Then
pTxt = "A"
Else
pTxt = SpalteTxt_ausNum(SpalteNum_ausTxt(.Cells(zNr, sNr)) + 1)
End If
End With
End With
End Function
Function SpalteTxt_ausNum(iNr As Long)
SpalteTxt_ausNum = Left(Cells(1, iNr).Address(0, 0), _
Len(Cells(1, iNr).Address(0, 0)) - 1)
End Function
Function SpalteNum_ausTxt(strSp As String) As Long
SpalteNum_ausTxt = Columns(strSp).Column
End Function
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Spaltenbuchstaben hochzählen
15.09.2011 09:59:57
Peter
Hallo Erich und Reinhard
Vielen Dank für die Antworten.
@ Erich: Ich habe deine Version umgesetzt. Nun habe ich mir noch folgende Überlegung gemacht:
Möglicherweise möchte man im Spaltenkopf noch eine Überschrift - oder zwischendurch eine Bemerkung in der Spalte einsetzen. Diese Eingaben müssten dann ignoriert werden. Dabei wollte ich die Überschrift mit einem vorausgehenden ' einsetzen und dann abfragen, ob vorhanden.
Wenn ich jedoch ' in eine Zeile eingebe und im Direktbereich ?ActiveCell.Value erhalte ich nichts zurück. Kann ich auf eine andere Weise abfagen, ob einem allfälligen Text ein ' vorausgeht?
Gruss, Peter
Anzeige
AW: Spaltenbuchstaben hochzählen
15.09.2011 10:21:56
Reinhard
Hallo Peter,
if Left(Range("a2"), 1) = "'" then
Gruß
Reinhard
AW: Spaltenbuchstaben hochzählen
15.09.2011 10:35:57
Peter
Hallo Reinhard
Das funktioniert leider nicht.
Ich habe in Zelle A2 'B (zwei Zeichen) eingegeben
Nachfolgender

Sub gibt mir "BBB" zurück  - und wenn ich in der Tabelle =LÄNGE(A2) eingebe, erhalte ich 1 zurü _
ck. Das Zeichen ' wird also ignoriert. Die Ergebnisse sind gleich, egal ob ich 'B oder nur B eingebe.
Gruss, Peter

Sub xxx()
If Left(Range("a2"), 1) = "'" Then MsgBox "AAA"
If Left(Range("a2"), 1) = "B" Then MsgBox "BBB"
End Sub

Anzeige
PrefixCharacter
15.09.2011 11:07:04
Matthias
Hallo
In A1 steht 'A (mit Hochkomma)
In A2 steht nur A (ohne Hochkomma)

Sub test()
MsgBox Len(Range("A1").PrefixCharacter)
MsgBox Len(Range("A2").PrefixCharacter)
End Sub
Mit diesm Unterschied kannst Du nun auswerten.
Gruß Matthias
AW: Spaltenbuchstaben hochzählen
15.09.2011 11:32:15
Reinhard
Hallo Peter,
sorry, ich glaub ich hatte da das Hochkomma doppelt vornedran :-(
Das kam durch's Rumprobieren. Auf den Namen PrefixCharacter kam ich nicht aber ich wußte aus der Erinnerung es gibt da eine solschen Befehl und das mit ein oder zwei Hochkommas wußte ich auch och aber wenn man die ersten buchstaben eines Befehls nicht kennt läßt sich schlecht in F1 suchen :-)
Abgeshen jetzt vom Hochkomma, wie wäre es mit diesem Code für die Funktion:

Function pNR2(ByVal Dummy, Optional xNull As Long)
'ohne optinales Argument 1 werden ausgeblendete Zellen ignoriert
Dim zNr As Long, Ber As Range, wks As Worksheet
pNR2 = "A"
With Application.Caller
Set wks = .Worksheet
If Application.Caller.Row  1 Then
Set Ber = wks.Range(wks.Cells(1, .Column), .Offset(-1, 0))
pNR2 = Split(.Cells(1, Application.CountA(Ber) - .Column + 2).Address, "$")(1)
End If
End With
End Function

Auch da kann man das mit dem Hochkomma einbauen. In welcher Spalte ist da der Text der mal Hochkommas hat? immer die links neben der Spalte wo die Funktion steht, oder eine feste Spalte?
Mir ist da noch nicht klar warum du da wo eine Überschrift ist einfach die Funktion nicht hinschreibst in die Zeile.
Gruß
Reinhard
Anzeige
AW: Spaltenbuchstaben hochzählen
15.09.2011 11:56:22
Peter
Hallo Reinhard
Ich brauche diese Buchstaben als Zeilenreferenz ("Ref"). Bei Zeilen, die berechnet werden, habe ich in der Spalte "Calc" ein Vermkerk, wie die Berechnung erfolgt.
Damit ich "Ref." und "Calc" in der Spalte oben einsetzen kann (mit einem Prefix) muss ich diesen Identifizieren können, sonst funktioniert die "Hochzählung" der Buchstaben nicht.
Vielen Dank und Gruss, Peter
https://www.herber.de/bbs/user/76629.xls
Spaltenbuchstaben hochzählen - kleine Erweiterung
15.09.2011 13:55:08
Erich
Hi Peter,
da gibt es nur eine Zeile mehr:

Function pTxt(dummy As Date, Optional xNull As Long)
'ohne optionales Argument 1 werden ausgeblendete Zellen ignoriert
Dim zNr As Long, sNr As Long
With Application.Caller
zNr = .Row
sNr = .Column
With .Worksheet
Do
zNr = zNr - 1
If zNr = 0 Then Exit Do
If .Rows(zNr).Hidden = False Or xNull = 1 Then
If WorksheetFunction.IsText(.Cells(zNr, sNr)) And _
.Cells(zNr, sNr).PrefixCharacter = "" Then Exit Do
End If
Loop
If zNr = 0 Then
pTxt = "A"
Else
pTxt = SpalteTxt_ausNum(SpalteNum_ausTxt(.Cells(zNr, sNr)) + 1)
End If
End With
End With
End Function
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Spaltenbuchstaben hochzählen
15.09.2011 15:15:41
Reinhard
Hallo Peter,
im Gegensatz zu Erich verstehe ich nur das Gebäude wo die Bahnhofsuhr dranhängt :-)
Ich sehe da in der Mappe keine Zellen mit Hochkomma vorneweg.
Meine Fragen sind auch nicht beantwortet oder ich verstehe deine Antwort nicht, beides gleichgut möglich.
Könntest du mal eine Mappe erstellen wo du in farblich markierten zellen manuell einträgst was dann da später durch eine Formel erzeugt stehen soll?
Auch mit ausgeblendeten zeilen.
Gruß
Reinhard
AW: Spaltenbuchstaben hochzählen
15.09.2011 15:44:42
Peter
Hallo Erich und Reinhard
Vielen Dank für die Antworten.
@ Erich G.: Das funktioniert super!
@ Reinhard: Sorry, dass es nicht klar war.
Ich habe eine Beispieldatei hochgeladen, ( https://www.herber.de/bbs/user/76635.xls ) anhand der die Problemlösung ersichtlich ist.
Die rot markierten Zellen in Spalte B haben einen Eintrag, welchem ein Prefix vorausgeht. Mit der Lösung von Erich werden nun die Buchstaben in Spalte B korrekt angezeigt.
Wenn anstelle 'Ref und 'Zwischentitel nur Ref und Zwischentitel eingegeben wird, erhalte ich i den übrigen Zellen in Spalte B "#WERT.
Gruss, Peter
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige