• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

sayı girip A-ZZZZ aralığında harf çevirmek?

  • Konbuyu başlatan Konbuyu başlatan hsayar
  • Başlangıç tarihi Başlangıç tarihi
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
SayıyıHarfeCevir isimli bir makro tanımlasak ve a değerine SayıyıHarfeCevir(Sayim) ingiliz alfabesine göre harf karşılığını alsak mesela

1 için A
27 için AA



703 için AAA

16384 için XFD

yine bilmem kaç için ZZZZ

değerlerini alabilir miyim?

Excelin Kolon değerini kullanamam (hem 2010 da XFD de bitiyor) bana en az i=500000 (beşyüzbin) için değer üretmeli.
 
Anladım, bugünlerde aklıma olmayacak yöntemler gelityor k icevap alamaıyorum.
 
gerçekten bunun çözümü yok mu?
 
Aşağıdaki KTF ile AVLG ye kadar sonuç üretiyor ama AVLH ve sonrasında hata veriyor. Bana da merak oldu neyi atlıyorum, anlamadım. Sitede arkadaşlar yardımcı olursa...
Function cevir(harf As String) As Integer
If Len(harf) = 1 Then
cevir = Asc(harf) - 64
ElseIf Len(harf) = 2 Then
cevir = Asc(Right(harf, 1)) - 64 + (Asc(Left(harf, 1)) - 64) * 26
ElseIf Len(harf) = 3 Then
cevir = Asc(Right(harf, 1)) - 64 + (Asc(Mid(harf, 2, 1)) - 64) * 26 + (Asc(Left(harf, 1)) - 64) * 676
ElseIf Len(harf) = 4 Then
cevir = Asc(Right(harf, 1)) - 64 + (Asc(Mid(harf, 3, 1)) - 64) * 26 + (Asc(Mid(harf, 2, 1)) - 64) * 676 + (Asc(Left(harf, 1)) - 64) * 17576
End If
End Function
 
hocam beni bi szi anladınız sizde yanlış anladınız :)
Şaka bir yana ben sayı girecem harf almak istiyorum :)
 
Haklısın, ters anlamışım, aşağıdaki KTF işinizi görür
Function cc(qq)

Do
If qq Mod 26 = 0 Then
a = Chr(90) & a
qq = (qq \ 26) - 1

Else
a = Chr((qq Mod 26) + 64) & a
qq = qq \ 26
End If

Loop While qq <> 0
cc = a
End Function
 
teşekkürler hocam.


Kod:
      Function SayidanHarfUret(SayiGir As Long)
      'omerceri@ Excel.web.tr
      'Bu fonksiyon ile girilen sayının karşılığını hrf olarak alabilirsiniz.
      Dim strHARF As String
        Do
          If SayiGir Mod 26 = 0 Then
            strHARF = Chr(90) & strHARF
            SayiGir = (SayiGir \ 26) - 1
          Else
            strHARF = Chr((SayiGir Mod 26) + 64) & strHARF
            SayiGir = SayiGir \ 26
          End If
        Loop While SayiGir <> 0
      SayidanHarfUret = strHARF
      End Function

Sub deneme()
MsgBox SayidanHarfUret(999999999)
End Sub

bu arada 999.999.999 sayısna akadar tamam da 1.000.000.000 için oferflow hatası veriyor. long tan daha üstün bir değer varmıydı gerçi ihityacımda yok ama, hata verdirtmek yrine #YOOOK hatası aldırsak daha iyi olur.
 
Son düzenleme:
teşekkürler hocam.
bu arada 999.999.999 sayısna akadar tamam da 1.000.000.000 için oferflow hatası veriyor. long tan daha üstün bir değer varmıydı gerçi ihityacımda yok ama, hata verdirtmek yrine #YOOOK hatası aldırsak daha iyi olur.

single veya double kullanabilirsiniz

bu vesile ile veri tiplerinin hatırlayalım. (binlik ayracı "," ve ondalık ayrıcı "."dır.
Boolean
True (-1) veya False (0). (veya +1)

Byte
0 'den 255'e kadar. (256 adet. xl 2003'teki sütun sayısı)

Integer
-32,768 'den 32,767 'e kadar. (256'nın karesi. 65,536 adet. xl 2003'teki satır sayısı)

Long
-2,147,483,648 'den 2,147,483,647 'e kadar. (65,536'nın karesi. 4,294,967,296 adet.)

Currency
-922,337,203,685,477.5808 'den 922,337,203,685,477.5807 'e kadar (4,294,967,296'nın karesi. 1.84467E+19 adet)


Single
-3.402823E38 'den -1.401298E-45 ' e kadar (negatif)
1.401298E-45 'den 3.402823E38 'e kadar (pozitif)

Double
-1.79769313486232E308 'den -4.94065645841247E-324 'e kadar (negatif)
4.94065645841247E-324 'den 1.79769313486232E308 'e kadar (pozitif)

en nihayetinde 2'nin katları. 2 nedir. boolean 0 ve 1'dir.
 
Geri
Üst