Mong được các pro giúp đỡ hàm cộng dồn lặp hệ thập lục phân !! (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

trungdt05c

Thành viên mới
Tham gia
10/3/14
Bài viết
5
Được thích
0
Chào các anh/chị và bạn !


Số là mình không rành excel lắm nên mong mọi người giúp !


Do công việc yêu cầu nên mình đang tạo chuỗi số lặp và cộng dồn theo theo kiểu số thập lục phân như sau :


- Chuỗi số cần tạo lặp và cộng dồn số thập lục phân theo trình tự qui luật : 0,1,3,4,5,7,C,D,F


- Số cần hiện thể hiện ra đủ số trong 1 ô có dạng 4 số theo cột:


Ví dụ:
0000
0001
0003
0004
0005
0007
000C
000D
000F
0010
0011
0013
0014
0015
0017
001C
001D
001F
0030
......


......
Cuối cùng là FFFF


Câu hỏi đặt ra là có hàm nào để nhập vào và rê 1 phát là ra từ 0000 đến FFFF luôn, .
Chứ giờ ngồi gõ từng số đến tết công gô luôn !!

Mong được cao thủ giúp đỡ !


Chân thành cảm ơn !
 
Lần chỉnh sửa cuối:
hãy sử dụng hàm DEC2HEX nhé

Ví dụ
tại A1 gõ 0,
A2 gõ =A1+1

tại B1 gõ =DEC2HEX(A1)
copy cho B2

giờ chọn A2:B2 --> rùi kéo copy xuống đến dòng 65535
là được kết quả như ý

-------------------
tương tự nghiên cứu DEC2BIN và ngược lại......vvvv

======================================
thêm thông tin
DEC2HEX nhé, tôi nhầm không phải là DEC2HEC

và muốn hiện 4 số đẹp đẽ (có sô 0 phía trước) thì
công thức tại B1 thay thành
=REPT("0",4-LEN(DEC2HEX(A1)) ) &DEC2HEX(A1)

thì sẽ đẹp đẽ định dạng 4 số luôn
 
Lần chỉnh sửa cuối:
Cảm ơn bác !


Mình xin mô tả rõ hơn như thế này !!


Đang đắp chân tạo mã cho IC 8 chân , mỗi chân 3 trạng thái vậy thì tất cả là 3^8 = 6561 trạng thái. ( không phải 2^16 = 65535 cell như trên đâu ạ ).
Qui ước nhị phân: Nối đất tương ứng là 00, để trống tương ứng là 01 và nối nguồn tương ứng là 11.


Vậy tương ứng sẽ có 8 cặp số nhị phân tương ứng từ chân 1 đến chân 8, :
Ví dụ tất cả nối đất thì : 00 00 00 00 00 00 00 00 00 00,
kết thúc là tất cả nối nguồn: 11 11 11 11 11 11 11 11
Vì mã theo dõi phải gọn nên chuyển về thập lục phân.
Trong đó nhóm 2 cặp số nhị phân 0000 thành 1 số thập lục tưng ứng là 0.
1111 thành 1 số thập lục tương ứng là F.
Vậy có 8 cặp tương ứng với 4 số thập lục phân: 0000 0000 0000 0000 ---> 0000
1111 1111 1111 1111 ---> FFFF


Ví dụ :
0000 0000 0000 0000 --> 0000
0000 0000 0000 0001 ---> 0001
0000 0000 0000 0011 ---> 0003


0000 0000 0000 0100 ---> 0004
0000 0000 0000 0101 ---> 0005
0000 0000 0000 0111 ---> 0007


0000 0000 0000 1100 ---> 000C
0000 0000 0000 1101 ---> 000D
0000 0000 0000 1111 ---> 000F


0000 0000 0001 0000 ---> 0010


và cứ thế cho đến : 1111 1111 1111 1111 --> FFFF




Đó là vì sao lặp theo qui luật : 0,1,3,4,5,7,C,D,F chứ không phải 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F


Nếu giúp cách tạo luôn dãy nhị phân trên thì quá tuyệt rồi ạ !


Xin cảm ơn các Anh/Chị và các bạn rất nhiều !
 
Lần chỉnh sửa cuối:
Đề tài điện tử thì tìm mấy diễn đàn C mà hỏi. Bên ấy có hàng ngàn đề tài kỹ thuật.
Excel vốn bản chất là kế toán thương mại, hỏi ở đây có hơi trật quẻ.
 
Đang làm hàm excel mà !! Cái đó chỉ là giải thích thêm thôi.
Mình chỉ cần hàm theo qui luật như trên !
 
Ôi trời ơi !! Mình chỉ gõ thủ công nên mới lên đây nhờ cao nhân giúp đỡ mà hic !!
 
Mình không hiểu bạn định cộng dồn gì đó, nhưng mình hiểu bạn cần tạo 1 bảng mã đối chiếu phải không.
Chỉ tạo bảng mã thôi thì mình dùng VBA và Code DIY như sau:

Mã:
Sub TaoMa()
Dim i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, k As Long
Dim Kq(1 To 6561, 1 To 2), Tg
For i1 = 0 To 1
For i2 = 0 To 1
For i3 = 0 To 1
For i4 = 0 To 1
For i5 = 0 To 1
For i6 = 0 To 1
For i7 = 0 To 1
For i8 = 0 To 1
For i9 = 0 To 1
For i10 = 0 To 1
For i11 = 0 To 1
For i12 = 0 To 1
For i13 = 0 To 1
For i14 = 0 To 1
For i15 = 0 To 1
For i16 = 0 To 1
Tg = i1 & i2 & i3 & i4 & " " & i5 & i6 & i7 & i8 & " " & i9 & i10 & i11 & i12 & " " & i13 & i14 & i15 & i16
If Len(Dich(Tg)) = 4 Then
k = k + 1
Kq(k, 1) = Tg
Kq(k, 2) = Dich(Tg)
End If
Next: Next: Next: Next: Next: Next: Next: Next: Next: Next: Next: Next: Next: Next: Next: Next
Sheet1.[A1:B6561] = Kq
End Sub
'================================
Function Dich(ByVal Ch As String) As String
Dim Tm, MStr1(), MStr2(),  m
Tm = Ch
MStr1 = Array("0000", "0001", "0011", "0100", "0101", "0111", "1100", "1101", "1111")
MStr2 = Array("0", "1", "3", "5", "7", "C", "D", "E", "F")
For m = 0 To 8
Tm = Replace(Tm, MStr1(m), MStr2(m))
Next
Dich = Replace(Tm, " ", "")
End Function

Code hơi chậm nhưng chỉ tạo 1 lần ngại tìm phương án tối ưu.
(Code TaoMa trong file mình quên sửa đoạn Sheet1.[A1:B65536]=Kq thành Sheet1.[A1:B6561]=Kq
Bạn chỉnh lại nha)

Banj có thể sử dụng trực tiếp hàm, ví dụ

=Dich(A1)
 

File đính kèm

Lần chỉnh sửa cuối:
Thêm một cách khác - Dùng hàm tự tạo

PHP:
Function IC8Chan(Num As Long) As String
Dim i As Long
For i = 1 To 8
    IC8Chan = Right("00" & String(Num Mod 3, "1"), 2) & IC8Chan
    Num = Num \ 3
    If (i Mod 2) = 0 Then IC8Chan = " " & IC8Chan
Next
IC8Chan = Trim(IC8Chan)
End Function
 
Toàn tuyệt chiêu không, mình làm được rồi !
Cảm ơn mọi người nhiều lắm !!
 

Bài viết mới nhất

Back
Top Bottom