hex

Ayhan Ercan

Özel Üye
Katılım
10 Ağustos 2005
Mesajlar
1,571
Excel Vers. ve Dili
Microsoft 365- Türkçe
arkadaşlar, windowsun hesap makınasında görünüm menusunden standart ve bilimsel ayrı iki görünüm var. bilimsel görünüme geçtiğinizde hex ondalık gibi fonksiyonlar görünmektedir. orada hex degerinde yazılan bir verinin ondalık degerine dönüşmekte. ancak hesap makınası 16 haneden fazla hesap yapmıyor. bana 32 hatta 64 haneye kadar hex değerinini ondalık değerine dönüştürecek bir metot lazım. acaba bu fonksiyonla mümkünmü? veya makro ile???
 
Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Bu kodları deneyebilirsin.

Kod:
Function Dec2Hex(ByVal DecimalIn As Variant) As String
Dim X As Integer
Dim BinaryString As String
Const BinValues = "*0000*0001*0010*0011" & _
"*0100*0101*0110*0111" & _
"*1000*1001*1010*1011" & _
"*1100*1101*1110*1111*"
Const HexValues = "0123456789ABCDEF"
Const MaxNumOfBits As Long = 96
BinaryString = ""
DecimalIn = Int(CDec(DecimalIn))
Do While DecimalIn <> 0
BinaryString = Trim$(Str$(DecimalIn - 2 * _
Int(DecimalIn / 2))) & BinaryString
DecimalIn = Int(DecimalIn / 2)
Loop
BinaryString = String$((4 - Len(BinaryString) _
Mod 4) Mod 4, "0") & BinaryString
For X = 1 To Len(BinaryString) - 3 Step 4
Dec2Hex = Dec2Hex & Mid$(HexValues, _
(4 + InStr(BinValues, "*" & _
Mid$(BinaryString, X, 4) & "*")) \ 5, 1)
Next
End Function
Kod:
Function Hex2Dec(ByVal HexString As String) As Variant
Dim X As Integer
Dim BinStr As String
Const TwoToThe49thPower As String = "562949953421312"
If Left$(HexString, 2) Like "&[hH]" Then
HexString = Mid$(HexString, 3)
End If
If Len(HexString) <= 23 Then
Const BinValues = "0000000100100011" & _
"0100010101100111" & _
"1000100110101011" & _
"1100110111101111"
For X = 1 To Len(HexString)
BinStr = BinStr & Mid$(BinValues, _
4 * Val("&h" & Mid$(HexString, X, 1)) + 1, 4)
Next
Hex2Dec = CDec(0)
For X = 0 To Len(BinStr) - 1
If X < 50 Then
Hex2Dec = Hex2Dec + Val(Mid(BinStr, _
Len(BinStr) - X, 1)) * 2 ^ X
Else
Hex2Dec = Hex2Dec + CDec(TwoToThe49thPower) * _
Val(Mid(BinStr, Len(BinStr) - X, 1)) * 2 ^ (X - 49)
End If
Next
Else
' Number is too big, handle error here
End If
End Function
 

Ayhan Ercan

Özel Üye
Katılım
10 Ağustos 2005
Mesajlar
1,571
Excel Vers. ve Dili
Microsoft 365- Türkçe
&#231;ok te&#351;ekk&#252;r ederim sa&#287;olun...
 

Ayhan Ercan

Özel Üye
Katılım
10 Ağustos 2005
Mesajlar
1,571
Excel Vers. ve Dili
Microsoft 365- Türkçe
say&#305;n asri, vermi&#351; oldu&#287;unuz kodlar&#305; kullanmaya ba&#351;lad&#305;m. her&#351;ey cok iyi gidiyor ancak tek bir sorun var.
maximum 32 hane hesaplatamad&#305;m. en fazla hesaplatabilece&#287;im hane say&#305; 29.
kodlar&#305;n&#305; incelemeye cal&#305;&#351;t&#305;m ama maalesef okadar professionel olmad&#305;&#287;&#305;m i&#231;in bunu &#231;&#246;zemedim. &#246;nemli bi i&#351; i&#231;in laz&#305;md&#305;, yard&#305;mc&#305; olabilecek arakada&#351;lara &#351;imdiden cok te&#351;ekk&#252;r ederim...
 

Ayhan Ercan

Özel Üye
Katılım
10 Ağustos 2005
Mesajlar
1,571
Excel Vers. ve Dili
Microsoft 365- Türkçe
Say&#305;n SchakaL,

A&#351;a&#287;&#305;daki linkte size verdi&#287;im cevap i&#351;inize yarar m&#305;?

http://www.excel.web.tr/showthread.php?t=19049
say&#305;n ripek, galiba yanl&#305;&#351; anlatt&#305;m sizin verdi&#287;iniz cavptaki kodlar&#305; kulland&#305;m ama benim istedi&#287;imden ba&#351;ka bi&#351;ey hesapl&#305;yor. mesela:

hex de&#287;eri FF olan ondal&#305;kta 255 olmas&#305; gerekiyor
yani 255 = FF
ama sizin verdi&#287;inizde 255 = 323535 de&#287;eri veriyor..
 

Ali

Uzman
Katılım
21 Temmuz 2005
Mesajlar
7,900
Excel Vers. ve Dili
İş:Excel 2016-Türkçe
Sn Schakal biraz ara&#351;t&#305;rd&#305;m a&#351;a&#287;&#305;daki fonksiyonu buldum belki i&#351;inize yarar.


Function DHex(Nb As Double) As String

Dim Nb2 As Double
Dim IsNeg As Boolean
Nb = WorksheetFunction.Round(Nb, 0)
IsNeg = Nb < 0
If IsNeg Then _
Nb = 16 ^ (Int(WorksheetFunction.Log(-Nb, 16)) + 2) + Nb
Do While Nb
Nb2 = Int(Nb / 16)
DHex = Mid("0123456789ABCDEF", Nb - Nb2 * 16 + 1, 1) & DHex
Nb = Nb2
Loop
If Not IsNeg Then DHex = "0" & DHex

End Function
 

Ayhan Ercan

Özel Üye
Katılım
10 Ağustos 2005
Mesajlar
1,571
Excel Vers. ve Dili
Microsoft 365- Türkçe
maalesef oda &#231;al&#305;&#351;mad&#305;. daha do&#287;rusu yaln&#305;&#351; &#231;al&#305;&#351;&#305;yor. galiba benim derdime bi care bulunamayacak. ne bulunmaz bi derdim varm&#305;&#351; bee :)
 
Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
Yanl&#305;&#351; &#231;&#246;z&#252;m oldu&#287;u i&#231;in taraf&#305;mdan silindi.
 
Son düzenleme:

Ayhan Ercan

Özel Üye
Katılım
10 Ağustos 2005
Mesajlar
1,571
Excel Vers. ve Dili
Microsoft 365- Türkçe
Sayın SchakaL,


Sorduğunuz soru gerçekten güzel bir soru.Çünkü herhangi bir kelimenin HEX kodunu bulmak kolay.Fakat herhangi bir HEX kodunun karşılığını bulmak biraz zor gibi.(Yada bana öyle geldi.)

Bende uzun uğraşlardan sonra sonucu bulabildim.

!!!Sanırım istediğiniz bu.!!!

Kod:
Function HexOndalik(ByVal HexKodu As Variant)
    Dim son, cevir As String
    son = ""
    For i = 1 To Len(HexKodu) Step 2
    veri = Mid(HexKodu, i, 2)
    cevir = Abs(Val("&H" & veri & "&"))
    son = son & cevir
    Next i
    HexOndalik = son
End Function
sayın ripek;
ya ben anlatamıyorum ya siz anlayamadınız. verdiğiniz kodu kendiniz denedinizmi?

örneğin
FF=255
bu tamam
sonrasında
FFF=4095 olması gerekirken
verdiğ sonuç 25515
buda yalnış bir sonuç.


birde bir sıkıntım daha var
bir sıkıntım var bir türlü aşamadığım.

hücre özelliklerinden hücre içine yazılacak verinin "genel" olması istendiğinde 11 haneden sonra yani 12. haneyi yazdığınızda örneğin:
123456789012 =
1,23457E+11
görünüyor,

hücre özelliklerini "genel"den "sayı" ya çevirdiğimde ise bu sefer 15 haneye kadar sorunsuz 15.haneden sonra herhane için en arkaya sıfır rakamını veriyor. örneğin:
1234567890123456 =
1234567890123450
oluyor
ve 15.haneden sonra yazılan her bir rakamıda arkaya sıfır olarak atıyor. bunu nasıl çözebilirim yani:
örneğin:
1234567890123456789012345 rakamını aynen yazdığım gibi göstermesini nasıl sağlayabilirm?
 
Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
H&#252;cre &#246;zelli&#287;ini "TEXT" yaparsan&#305;z olur.

Hesaplamada hakl&#305;s&#305;n&#305;z.Tekrar bakaca&#287;&#305;m..
 

Ayhan Ercan

Özel Üye
Katılım
10 Ağustos 2005
Mesajlar
1,571
Excel Vers. ve Dili
Microsoft 365- Türkçe
H&#252;cre &#246;zelli&#287;ini "TEXT" yaparsan&#305;z olur.

Hesaplamada hakl&#305;s&#305;n&#305;z.Tekrar bakaca&#287;&#305;m..
h&#252;cre &#246;zelli&#287;ini "text" yani "metin" demek mistiyorsunuz herhalde. onuda denedim. oda "genel" deki gibi sonu&#231; veriyor.
ama
ben "text" yapt&#305;&#287;&#305;m zaman kendim yazd&#305;&#287;&#305;m h&#252;crede g&#246;r&#252;nmesinden ziyade;
o h&#252;creye bir formul yaz&#305;pta form&#252;l&#252;n sonucunu isteid&#287;im zaman dediklerim oluyor..
 
Üst