簡體   English   中英

從一系列單元格中找到最大的二進制數

[英]finding the largest binary number from a range of cells

我有一些二進制數的數據,包含在從A2到A8,從B2到B8等幾個單元格范圍內,一直到G列。 現在,我想檢查上述行中最大的二進制數,並將其粘貼到單元格中,最后使用的范圍以下兩行。 (即,要粘貼到A10中的行A中最大的二進制數,依此類推)。 我沒有找到任何可以找到二進制數的值的函數,而我運行的代碼發現了將那些視為自然數的最大數。 您的幫助將不勝感激。 謝謝!

您可以使用Excel函數Bin2Dec將其更改為十進制

Function MaxBin(r as range)
Dim curmax as long
Dim s as range
For each s in r
   If Application.WorksheetFunction.Bin2Dec(s.Text) > curmax Then curmax = Application.WorksheetFunction.Bin2Dec(s.Text)
Next s
MaxBin = curmax
End Function

好的,首先我做了一個將二進制轉換為十進制並存儲在模塊中的函數。 (您可以將其存儲在任何位置)此函數可以處理任何大小的二進制文件

Function BinToDecConverter(BinaryString As String) As Variant
    Dim i As Integer
    For i = 0 To Len(BinaryString) - 1
        BinToDecConverter = CDec(BinToDecConverter) + Val(Mid(BinaryString, Len(BinaryString) - i, 1)) * 2 ^ i
    Next
End Function

之后,我做了一個循環遍歷sheet1上所有二進制文件的子程序(可能需要為您的工作表更改它)

Sub FindLargestBinary()
On Error Resume Next
Dim wb As Workbook
Dim ws As Worksheet
Set wb = Application.ThisWorkbook
Set ws = wb.Sheets("Sheet1")

Dim tempVal, tempRow As Integer
Dim iCoulmn, iRow As Integer

For iCoulmn = 1 To 7 'Run from A to G
    tempRow = 2
    tempVal = 0
    For iRow = 2 To 8 'Run from row 2 to 8
        If BinToDecConverter(ws.Cells(iRow, iCoulmn).Value) > tempVal Then tempVal = BinToDecConverter(ws.Cells(iRow, iCoulmn).Value): tempRow = iRow ' Check if current binary i higher then any previous

    Next iRow
    ws.Cells(iRow + 1, iCoulmn).Value = ws.Cells(tempRow, iCoulmn).Value 'Print highest binary
Next iCoulmn

End Sub

希望這可以幫助你..

假設您的二進制值是文本字符串,則此公式會將值轉換為數字,找到MAX ,然后再轉換回文本字符串

=TEXT(MAX(A2:A8+0),"00000")

使用CTRL + SHIFT + ENTER確認

或者您可以使用此版本,該版本使用AGGREGATE函數查找最大值,並且不需要“數組輸入”

=DEC2BIN(AGGREGATE(14,6,BIN2DEC(A2:A8+0),1))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM