2012-09-26 17:14:51 +0000 2012-09-26 17:14:51 +0000
27
27

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

Chciałbym sformatować komórkę w programie Microsoft Excel 2007 w systemie szesnastkowym, ale nie mogę znaleźć sposobu, aby to zrobić.

Czy istnieje wbudowany sposób na zmianę podstawy z 10 na 16 dla komórki?

Odpowiedzi (6)

20
20
20
2017-04-20 01:48:01 +0000

Jak wspomniano wcześniej, formuła =DEC2HEX(A1) konwertuje na zapis szesnastkowy, a DEC2HEX(A1,8) konwertuje na zapis szesnastkowy z prefiksem 0 oznaczającym 32 bity. Podczas gdy dodanie początkowych 0 czyni liczby bardziej czytelnymi, szczególnie jeśli używasz czcionki stałoprzecinkowej, wersja heksadecymalna i dziesiętna mogą się mieszać, gdy wszystkie cyfry w liczbie są 0-9 (np. 327701=50015).

Ulepszeniem jest dodanie prefiksu “0x”. Istnieją dwa sposoby, aby to zrobić. =“0x”&DEC2HEX(A1,8) zrobi to, ale zmieni pole na pole tekstowe, więc nie może już być łatwo używane w formułach. Inną metodą jest użycie formatu niestandardowego. Jeśli zastosujesz format niestandardowy “0x”@ do komórki, to wartość komórki może być nadal używana w równaniu. Przykłady:

╔═══╦════════════════╦════════════╦═════════════════════════════╦═══════════════╗ ║ ║ A ║ B ║ ║ ║ ╠═══╬════════════════╬════════════╬═════════════════════════════╬═══════════════╣ ║ 1 ║ ║ Value ║ Corresponding Formula ║ Number Format ║ ║ 2 ║ Decimal ║ 11162790 ║ 11162790 ║ General ║ ║ 3 ║ Hex ║ AA54A6 ║ =DEC2HEX(B2) ║ General ║ ║ 4 ║ leading 0's ║ 00AA54A6 ║ =DEC2HEX(B2,8) ║ General ║ ║ 5 ║ Text 0x prefix ║ 0x00AA54A6 ║ =DEC2HEX(B2,8) ║ "0x"@ ║ ║ 6 ║ Text 0x prefix ║ 0x00AA54A6 ║ ="0x" & DEC2HEX(B2,8) ║ General ║ ║ 7 ║ Use B5 ║ AA54A600 ║ =DEC2HEX(HEX2DEC(B5) \* 256) ║ General ║ ║ 8 ║ Use B5 ║ 0xAA54A600 ║ =DEC2HEX(HEX2DEC(B5) \* 256) ║ "0x"@ ║ ║ 9 ║ Try to use B6 ║ #NUM! ║ =DEC2HEX(HEX2DEC(B6) \* 256) ║ General ║ ╚═══╩════════════════╩════════════╩═════════════════════════════╩═══════════════╝

Jednak duże liczby ze zmieniającymi się cyframi mogą być nadal trudne do odczytania, więc lubię wstawiać przecinki do liczb dziesiętnych i “@” do liczb szesnastkowych. Najpierw musisz uzyskać górne i dolne 16 bitów liczby. Górne 16 bitów liczby 32-bitowej można uzyskać za pomocą = INT( A1 / 2^16 ). Dzielenie przez 2^16 działa jak przesunięcie w prawo o 16 bitów, a INT usuwa resztę ułamkową. MOD może być użyty do uzyskania dolnych 16 bitów dowolnej 32- lub 64-bitowej liczby; =MOD(A1, 2^16). MOD efektywnie dostaje z powrotem resztę, czyli dolne 16 bitów. Oto tabela, która pokazuje to w działaniu. ╔═══╦═════════════╦═══════════════╦════════════════════════════════════╦═════════╗ ║ ║ A ║ B ║ ║ ║ ╠═══╬═════════════╬═══════════════╬════════════════════════════════════╬═════════╣ ║ 1 ║ ║ Value ║ Corresponding Formula ║ Format ║ ║ 2 ║ Decimal ║ 3,098,743,209 ║ 3098743209 ║ #,##0 ║ ║ 3 ║ Upper Bytes ║ B8B3 ║ =DEC2HEX(INT( B2/2^16 ), 4) ║ General ║ ║ 4 ║ Lower Bytes ║ 11A9 ║ =DEC2HEX(MOD( B2, 2^16 )) ║ General ║ ║ 5 ║ Full Number ║ 0xB8B3\_11A9 ║ ="0x" & DEC2HEX(INT( B2/2^16 ), 4) ║ General ║ ║ ║ ║ ║ & "\_" & DEC2HEX(MOD(B2, 2^16), 4) ║ ║ ╚═══╩═════════════╩═══════════════╩════════════════════════════════════╩═════════╝


BTW, muszę złożyć wielkie podziękowania dla https://ozh.github.io/ascii-tables/ . Użyłem tego linku do stworzenia tabel tekstowych ASCII. Po prostu skopiowałem tabelę z mojego arkusza Excela do sekcji Input i automatycznie utworzyłem ładny układ tekstu unicode.

16
16
16
2012-09-26 17:24:39 +0000

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

7
7
7
2012-09-26 17:20:16 +0000

Jeśli komórka do konwersji to A1 użyj =DEC2HEX(A1).

4
4
4
2013-12-31 03:16:44 +0000

Jeśli musisz wykonać operacje matematyczne na liczbach skonwertowanych do formatu heksadecymalnego, najpierw przekonwertuj je do formatu dziesiętnego, wykonaj operację, a następnie przekonwertuj z powrotem do formatu heksadecymalnego.

Na przykład, jeśli komórka A1 ma liczbę heksadecymalną, to z tej formuły powstałaby taka jak:

=DEC2HEX(17)

, która zostałaby wyświetlona jako 11, a komórka A2 ma formułę:

=DEC2HEX(165)

która wyświetliłaby się jako A5, i chcemy je dodać do siebie, to ta formuła uzyskałaby pożądany wynik:

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

która wyświetliłaby się jako B6

1
1
1
2018-07-25 14:35:12 +0000
=REPT("0",4-LEN(DEC2HEX(B3)))&DEC2HEX(B3)

Formuła REPT powtarza “0” w oparciu o długość łańcucha heksadecymalnego, który jest generowany przez konwersję z dziesiętnego i pożądanej długości łańcucha HEX. W tym przykładzie chcę wygenerować ciąg HEX o długości 4.

Następnie konkatenujesz wiodące zera do rzeczywistego ciągu HEX, generując w ten sposób wartość HEX o pożądanej długości.

Zalety:

  1. Łatwe kopiowanie formuły do innego arkusza. Tylko dwa odwołania do komórki z wartością dziesiętną B3 do ponownego przypisania.
  2. Wyniki tej formuły są traktowane przez Excela jako wartości HEX. Możesz również poprzedzić “0x”, ale nie uważam tego za konieczne.

Uwaga: Używam tego, gdy kopiuję ciągi HEX i są one kopiowane z różną długością. Najpierw generuję kolumnę wartości dziesiętnych z oryginalnych wartości, z którymi mogę następnie uruchomić tę formułę.

0
0
0
2017-01-19 19:55:02 +0000

Oto rozwiązanie, które znalazłem, aby upewnić się, że mogę sformatować te liczby heksadecymalne do formatu HTML:

SWITCH(LEN(DEC2HEX(B6)),1,"000"&DEC2HEX(B6),2,"00"&DEC2HEX(B6),3,"0"&DEC2HEX(B6),4,DEC2HEX(B6))