Jak sformatować komórkę Microsoft Excel 2007 w systemie szesnastkowym?

27

Chciałbym sformatować komórkę w programie Microsoft Excel 2007 w systemie szesnastkowym, ale nie wiem, jak to zrobić.

Czy istnieje wbudowany sposób zmiany bazy z 10 na 16 dla komórki?

WilliamKF
źródło

Odpowiedzi:

18

Jak wspomniano wcześniej, formuła = DEC2HEX (A1) konwertuje na hex, a DEC2HEX (A1,8) konwertuje na hex z prefiksem 0, co oznacza 32 bity. Dodanie początkowych zer powoduje, że liczby są bardziej czytelne, szczególnie jeśli używasz czcionki o stałym punkcie, wersje szesnastkowe i dziesiętne mogą się pomieszać, gdy wszystkie cyfry w liczbie będą miały wartość 0–9 (np. 327701 = 50015).

Ulepszenie polega na dodaniu przedrostka „0x”. Można to zrobić na 2 sposoby. = "0x" i DEC2HEX (A1,8) załatwi sprawę, ale zmieni pole na pole tekstowe, więc nie będzie już można go łatwo używać w formułach. Inną metodą jest użycie niestandardowego formatu. Jeśli zastosujesz niestandardowy format „0x” @ do komórki, wówczas wartość komórki będzie nadal mogła być używana w równaniu. Przykłady:

╔═══╦════════════════╦════════════╦═══════════════ ══════════════╦═══════════════╗
║ ║ A ║ B ║ ║ ║
╠═══╬════════════════╬════════════╬═══════════════ ══════════════╬═══════════════╣
║ 1 ║ ║ Wartość ║ Odpowiednia formuła Format Format liczb ║
║ 2 ║ Dziesiętny ║ 11162790 ║ 11162790 ║ Ogólne ║
║ 3 ║ Hex ║ AA54A6 ║ = DEC2HEX (B2) ║ Ogólne ║
║ 4 ║ wiodące zera ║ 00AA54A6 ║ = DEC2HEX (B2,8) ║ Ogólne ║
║ 5 ║ Prefiks tekstowy 0x ║ 0x00AA54A6 ║ = DEC2HEX (B2,8) ║ „0x” @ ║
║ 6 ║ Prefiks tekstowy 0x ║ 0x00AA54A6 ║ = „0x” i DEC2HEX (B2,8) ║ Ogólne ║
║ 7 ║ Użyj B5 ║ AA54A600 ║ = DEC2HEX (HEX2DEC (B5) * 256) ║ Ogólne ║
║ 8 ║ Użyj B5 ║ 0xAA54A600 ║ = DEC2HEX (HEX2DEC (B5) * 256) ║ „0x” @ ║
║ 9 ║ Spróbuj użyć B6 ║ #NUM! ║ = DEC2HEX (HEX2DEC (B6) * 256) ║ Ogólne ║
╚═══╩════════════════╩════════════╩═══════════════ ══════════════╩═══════════════╝


Jednak duże liczby o różnych cyfrach mogą być nadal trudne do odczytania, więc lubię wstawiać przecinki w liczbach dziesiętnych, a „_” w liczbach szesnastkowych. Najpierw musisz uzyskać górną i dolną 16 bitów liczby. Górne 16 bitów liczby 32-bitowej można odzyskać za pomocą = INT (A1 / 2 ^ 16). Dzielenie przez 2 ^ 16 działa jak prawe przesunięcie 16 bitów, a INT usuwa resztę ułamkową. MOD może być użyty do uzyskania niższych 16 bitów dowolnej liczby 32- lub 64-bitowej; = MOD (A1, 2 ^ 16). MOD skutecznie odzyskuje resztę, czyli 16 niższych bitów. Oto tabela, która pokazuje to w akcji.

╔═══╦═════════════╦═══════════════╦═══════════════ ═════════════════════╦═════════╗
║ ║ A ║ B ║ ║ ║
╠═══╬═════════════╬═══════════════╬═══════════════ ═════════════════════╬═════════╣
║ 1 ║ ║ Wartość ║ Odpowiednia formuła ║ Format ║
║ 2 ║ dziesiętny ║ 3 098,743,209 ║ 3098743209 ║ #, ## 0 ║
║ 3 ║ Górne bajty ║ B8B3 ║ = DEC2HEX (INT (B2 / 2 ^ 16), 4) ║ Ogólne ║
║ 4 ║ Niższe bajty ║ 11A9 ║ = DEC2HEX (MOD (B2, 2 ^ 16)) ║ Ogólne ║
║ 5 ║ Pełny numer ║ 0xB8B3_11A9 ║ = „0x” i DEC2HEX (INT (B2 / 2 ^ 16), 4) ║ Ogólne ║
║ ║ ║ ║ & "_" i DEC2HEX (MOD (B2, 2 ^ 16), 4) ║ ║
╚═══╩═════════════╩═══════════════╩═══════════════ ═════════════════════╩═════════╝


BTW, muszę bardzo podziękować https://ozh.github.io/ascii-tables/ . Użyłem tego linku, aby utworzyć tabele tekstowe ASCII. Właśnie skopiowałem tabelę z arkusza kalkulacyjnego programu Excel do jego sekcji wprowadzania i automatycznie utworzyłem ładny układ tekstu w formacie Unicode.

OldEmbeddedGuy
źródło
16

Jeśli chcesz sformatować komórkę, aby móc wpisać liczbę dziesiętną i automatycznie wyświetlać ją jako liczbę szesnastkową, nie jest to możliwe. Możesz albo sformatować komórkę jako tekst i wprowadzić liczby szesnastkowe bezpośrednio (ale pamiętaj, że Excel nie może używać ich do obliczeń), lub użyj funkcji DEC2HEX()i HEX2DEC()do konwersji między bazą 10 a bazą 16.

Indrek
źródło
1
Dla odniesienia istnieje również to, DEC2BIN()co konwertuje na binarne. Aby uzyskać plik binarny o stałej szerokości, użyj czegoś takiego=TEXT(DEC2BIN(A1), "0000")
Tor Klingberg
1
W zlokalizowanym w Niemczech programie Excel 2013 DEC2HEX i HEX2DEC powodują wyświetlenie komunikatu o błędzie # NAZWA ?. Z pomocą pakietu Office mogłem dowiedzieć się, że funkcje te nazywają się odpowiednio DEZINHEX i HEXINDEZ.
Bernhard Hiller
Jak mogę rozszerzyć = 0x1234AB do = 0x001234AB (potrzebuję stałej szerokości 8)?
Danijel
@Danijel Użyj drugiego parametru DEC2HEX.
Vincent G
7

A1Użyj komórki do konwersji =DEC2HEX(A1).

orzechy
źródło
2
Możesz dodać wiodące „0x” do swojej wartości szesnastkowej. Użyj, ="0x"&DEC2HEX(A1,4)aby uzyskać wynik, który wygląda jak 0x1AF2.
User5910,
4

Jeśli chcesz wykonać operacje matematyczne na liczbach przekonwertowanych na szesnastkowe, najpierw przekonwertuj je na dziesiętne, wykonaj operację, a następnie przekonwertuj z powrotem na szesnastkowy.

Na przykład, jeśli komórka A1ma numer szesnastkowy, taki jak utworzony z tej formuły:

=DEC2HEX(17)

który byłby wyświetlany jako 11, a komórka A2ma formułę:

=DEC2HEX(165)

który byłby wyświetlany jako A5i chcesz je dodać razem, wówczas ta formuła uzyska pożądany wynik:

=DEC2HEX(HEX2DEC(A1)+HEX2DEC(A2))

który byłby wyświetlany jako B6

Sprawdź to
źródło
1
=REPT("0",4-LEN(DEC2HEX(B3)))&DEC2HEX(B3)

Formuła REPT powtarza „0” na podstawie długości ciągu szesnastkowego, który jest generowany przez konwersję go z dziesiętnej, i pożądanej długości ciągu HEX. W tym przykładzie chcę wygenerować ciągi HEX o długości 4.

Następnie konkatenuje się zera wiodące z rzeczywistym łańcuchem HEX, generując w ten sposób wartość HEX o pożądanej długości.

Zalety:

  1. Łatwe kopiowanie formuły do ​​innego arkusza roboczego. Tylko z dwoma odwołaniami do komórki w wartości dziesiętnej, B3, w celu ponownego przypisania.
  2. Wyniki tej formuły są traktowane przez Excel jako wartości HEX. Możesz także przedrostek „0x”, ale nie uważam tego za konieczne.

Uwaga: używam tego, gdy kopiuję ciągi HEX i są one kopiowane w różnych długościach. Najpierw generuję kolumnę wartości dziesiętnych na podstawie oryginalnych wartości, na których mogę następnie uruchomić tę formułę.

WSimpson
źródło
0

Oto rozwiązanie, które zapewniłem, że mogę sformatować te liczby szesnastkowe w formacie HTML:

SWITCH(LEN(DEC2HEX(B6)),1,"000"&DEC2HEX(B6),2,"00"&DEC2HEX(B6),3,"0"&DEC2HEX(B6),4,DEC2HEX(B6))
Stephen Frick
źródło
2
Wyjaśnienie tego, co dzieje się w kodzie, uczyniłoby odpowiedź bardziej przydatną.
WilliamKF,