안녕하세요. 오즈맨 입니다.
 시트명은 십진수 입니다.
[ 10진수를 2진수로 변환하기(내장함수 한계극복) ] 예제 입니다.
 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
ABCDEF
십진수변환한2진수사용자함수결과비교결과참고(변환후길이)
      
100000001 8 
1000000010 8 
1100000011 8 
10000000100 8 
10100000101 8 
      
0000000100000001같음8 
0000001000000010같음8 
0000001100000011같음8 
0000010000000100같음8 
510 #NUM!111111110#NUM!9자릿수지정 오류
511 #NUM!111111111#NUM!9자릿수지정 오류
      
510 111111110111111110같음9내장함수 한계
511 111111111111111111같음9내장함수 한계
512 #NUM!1000000000#NUM!10 
513 #NUM!1000000001#NUM!10 
1,234,567 #NUM!100101101011010000111#NUM!21 


십진수
시트 에 사용한 수식
입니다. by MicroSoft Excel v 2003
   $ 가 있는 수식은 절대(혼합)참조로 셀 주소를 고정합니다. 참조하세요!!
No셀주소왼쪽의 셀에 수식을 넣으면 오른쪽 결과가 나옵니다.
(복사)를 누르면 셀의 수식이 클립보드(메모리)로 복사되는데,
익스플로러의 종류에 따라 (복사)가 작동이 안 될 수 있습니다.
결과수식을
1B3=DEC2BIN(A3)1
2 B3  셀의 수식을 여기에 복사하세요 -→ 
B3:B7,B16:B20
  
3C3=Dec_Bin(A3)00000001
4 C3  셀의 수식을 여기에 복사하세요 -→ 
C3:C7,C9:C14,C16:C20
  
5E3= LEN(C3)8
6 E3  셀의 수식을 여기에 복사하세요 -→ 
E3:E7,E9:E14,E16:E20
  
7B9=DEC2BIN(A9,8)00000001
8 B9  셀의 수식을 여기에 복사하세요 -→ B9:B14  
9D9=IF(B9=C9,"같음","다름")같음
10 D9  셀의 수식을 여기에 복사하세요 -→ 
D9:D14,D16:D20
  

   보시는 내용은 위의 표에 값이, 아래의 표에는 해당 셀의 수식이 있습니다.   
   첨부파일이 없습니다, 원하는 부분을 시트(셀)에 붙여 넣으세요.
     도움이 되시기를 바랍니다.


     엑셀 프로그램에서는 2진수 기준 8자리
     10진수 기준 511 까지 사용 가능합니다. (도움말 참조하세요 !!!  )



                                                  
                                                                                                       
해결한  사용한 사용자정의함수 코드입니다

Option Explicit

Function Dec_Bin(Dec_Value As Double, Optional HisLen As Double = 8) As String' === 모듈 시작
' CodeBy [ 오즈맨 ] , Date : 2015-06-23
Dim His_Dec As Currency
Dim ii      As Double
Dim AdStrr  As String
        His_Dec = Abs(Dec_Value)
    For ii = 1 To 2
        If His_Dec = 0 Then
        Else
            Dec_Bin = CStr(His_Dec Mod 2) & Dec_Bin
            His_Dec = His_Dec \ 2
                ii = ii - 1
        End If
    Next
        
        If HisLen - Len(Dec_Bin) > 0 Then
            AdStrr = String(HisLen - Len(Dec_Bin), "0")
            Dec_Bin = AdStrr & Dec_Bin
        End If
            If Dec_Value < 0 Then Dec_Bin = "-" & Dec_Bin
        
End Function         ' ___ 모듈 종료




Posted by 오즈맨스머프


가끔은 아주 가끔은 애먹을 일이 있으면 보게 됩니다
숫자가 지수형식으로 display 됨으로 인한 오류 사전 예방입니다


Option Explicit


Sub NumericCheck()' === 모듈 시작
' CodeBy [ 오즈맨 ] , Date : 2015-05-14
' 배열내 숫자가 오류인지 아닌지를 검사할 임시 배열입니다.
Dim tmpVarr(1 To 20, 1 To 4)
Dim iip As Double
For iip = 1 To 20
     tmpVarr(iip, 1) = Rnd
     tmpVarr(iip, 2) = Rnd
     tmpVarr(iip, 3) = tmpVarr(iip, 2) - tmpVarr(iip, 1)
     tmpVarr(iip, 4) = "=rc[-1]-rc[-2]"
Next
Cells(1, 1).Resize(21, 5).ClearContents
Cells(1, 1).Resize(20, 4).Value = tmpVarr

Call ErrChk(tmpVarr)

End Sub         ' ___ 모듈 종료



Sub ErrChk(His_Variant As Variant)' === 모듈 시작
' CodeBy [ 오즈맨 ] , Date : 2015-05-14
' 배열내 숫자가 오류인지 아닌지를 검사합니다.
' 오류로 반환되는 경우에는 숫자의 형식을 미리 확인합니다.
Dim i_i   As Double
Dim j_j   As Double
Dim chkkV As String
Dim cnt_i As Double, cnt_j As Double
Dim AnswUniq   As New Collection

If TypeName(His_Variant) = "Variant()" Then
Else
     If IsNumeric(His_Variant) = True Then
          chkkV = "'" & His_Variant
               If chkkV Like "*E*" Then
                    If Mid(chkkV, 3, 1) = "." Then
                         AnswUniq.Add "Value Error =  " & Mid(chkkV, 2)
                    End If
               End If
     End If
     If AnswUniq.Count <> 0 Then GoTo Error_Found_OZman
End If

cnt_i = UBound(His_Variant, 1)
cnt_j = UBound(His_Variant, 2)

For i_i = 1 To cnt_i
For j_j = 1 To cnt_j
     If IsNumeric(His_Variant(i_i, j_j)) = True Then
          chkkV = "'" & His_Variant(i_i, j_j)
               If chkkV Like "*E*" Then
                    If Mid(chkkV, 3, 1) = "." Then
                         AnswUniq.Add "Error R/C " & i_i & "/" & j_j & "= " & Mid(chkkV, 2) & " ~~ " & CDec(Mid(chkkV, 2))
                    End If
               End If
     End If
Next
Next
     If AnswUniq.Count <> 0 Then GoTo Error_Found_OZman


Exit Sub


Error_Found_OZman:
cnt_i = AnswUniq.Count

Debug.Print
Debug.Print
Debug.Print "Errrrrr", Now
For i_i = 1 To cnt_i
     Debug.Print AnswUniq(i_i)
Next

Debug.Print "See Again"
Debug.Print

MsgBox "Numeric   Error   Check Again   ", vbOKOnly, "Special Module By OZMAN"

End Sub         ' ___ 모듈 종료


Posted by 오즈맨스머프