Excel Spaltenzahl als Buchstabe

  • moin moin,

    möchte mir in einer Excel Tabelle Rahmen machen aber diese auch begrenzen.
    Wie man die letzte Zeile und Spalte findet weiß ich.
    Das Problem ist nur das ich die Spaltenangabe als Zahl habe und nicht als Buchstaben zB. AZ
    habe dazu auch Formeln gefunden die das umwandeln aber kann diese nicht in autoit umwandeln.
    Habe auch auf Z1S1 umgestellt gehabt was aber auch nicht zum gewünschten geführt hat.

    Function SPALTENNAME(Zelle As Range)
    Dim s As Byte
    Dim Name As String
    s = Zelle.Column
    s = s - 1
    Name = Chr(s Mod 26 + 65)
    If s > 25 Then Name = Chr(Int(s / 26) + 64) & Name
    SPALTENNAME = Name
    End Function

    oder

    Function SPALTENKOPF(Zelle As Range)
    Dim s As Byte
    Dim Name As String
    Name = Zelle.Address
    Name = Right(Name, Len(Name) - 1)
    If Mid(Name, 2, 1) = "$" Then
    Name = Left(Name, 1)
    Else
    Name = Left(Name, 2)
    End If
    SPALTENKOPF = Name
    End Function


    mfg
    oh-ha

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit

    Einmal editiert, zuletzt von oh-ha (6. April 2010 um 09:48)

  • Habe es selber rausbekommen (nach 6 Stunden man man man )

    Mußte nur ein " $oExcel.Range " davor setzen.
    Dann kann man auch alle bereiche markieren.

    [autoit]

    $Zeilenanzahl = $oExcel.ActiveSheet.Cells($oExcel.Rows.Count, 1).End(-4162).Row ; -4162 = xlUp
    $Spaltenanzahl = $oExcel.ActiveSheet.Cells(10, $oExcel.Columns.Count).End(-4159).Column ; -4159 = xlToLeft
    $oExcel.Range($oExcel.Cells(6,1),$oExcel.Cells($Zeilenanzahl,$Spaltenanzahl)).Select

    [/autoit]


    mfg
    oh-ha

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit

    • Offizieller Beitrag

    Wenn du mal Spaltenzahlen in Adressen oder umgekehrt wandeln möchtest, damit geht es:

    Spoiler anzeigen
    [autoit]

    Func _LetterToColNr($sLetter)
    If StringLen($sLetter) = 1 Then Return Asc(StringUpper($sLetter)) -64
    Return (Asc(StringUpper(StringLeft($sLetter, 1)))-64)*26 + (Asc(StringUpper(StringRight($sLetter, 1)))-64)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _ColNrToLetter($iColNr)
    If $iColNr <= 26 Then Return Chr($iColNr+64)
    $iColNr -= 26
    Local $1 = 65, $2 = 90, $tmp, $diff = 1
    $tmp = Mod($iColNr,26)
    If $tmp Then
    $2 = 64 +$tmp
    $diff = 0
    EndIf
    $1 += Int($iColNr/26) - $diff
    Return Chr($1) & Chr($2)
    EndFunc

    [/autoit]
  • Hehe, werde dank dir noch zum Excel meister

    Zitat von BugFix

    Wenn du mal Spaltenzahlen in Adressen oder umgekehrt wandeln möchtest, damit geht es:


    Werde ich mit Sicherheit mal brauchen wenn ich so weitermache. :thumbup:


    mfg
    oh-ha

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit