从一系列单元格中找到最大的二进制数

时间:2017-11-14 10:43:32

标签: excel vba excel-vba binary max

我有一些二进制数的数据,在几个单元格范围内,从A2到A8,从B2到B8,依此类推,直到G列。 现在,我想检查上面行中最大的二进制数,并将其粘贴到单元格中,最后一个使用范围下方两行。 (即,来自行A的最大二进制数将在A10中粘贴,等等)。 我找不到任何可以找到二进制数值的函数,而我运行的代码会将最大数量视为自然数。 我们将不胜感激。 谢谢!

3 个答案:

答案 0 :(得分:0)

您可以使用excel函数Bin2Dec将它们更改为十进制

<p hidden>this text is hidden</p>

答案 1 :(得分:0)

好的,首先我创建了一个将二进制转换为十进制并存储在模块中的函数。 (您可以将它存储在任何地方)此函数处理任何大小的二进制文件

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

希望这可以帮助你...

答案 2 :(得分:0)

假设您的二进制值是文本字符串,此公式将值转换为数字,找到{}然后转换回文本字符串

MAX

使用 CTRL + SHIFT + ENTER确认

或者您可以使用此版本使用=TEXT(MAX(A2:A8+0),"00000")函数找到最大值,并且不需要&#34;数组输入&#34;

AGGREGATE