Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Создание макроса суммы в HEX - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Создание макроса суммы в HEX
Создание макроса суммы в HEX
allert Дата: Воскресенье, 28.09.2014, 18:35 | Сообщение № 1
Группа: Гости
Добрый день.
Для реинжиниринга эл.устройства нужно проанализировать поток данных проходящих по RS232.
Все данные в HEX.
Нужен макрос который бы суммировал ячейки без перевода в "десятичные".
На данный момент пользуемся именно переводами в десятичные, затем все необходимые вычитания\сложения и после обратный перевод в hex.
Данных много а работа по сути изыскательская. Наличие большого числа преобразований увеличивает колл ошибок (человеческий фактор).
Большая просьба для тех у кого есть решение - поделитесь пожалуйста.
Три макроса:
1. SUM_HEX суммирует указанные hex-ячейки и даёт результат hex в заданной разрядности. Этот же макрос должен работать и на вычитание.
12+A2+01=B5
B5-CD=FE8
2. CRC16 суммирует указ hex-ячейки и результат даёт в hex-виде только 2 разрядами ( 00 .... FF ). Старшие разряды отбрасываем. По сути это та же сумма что и в пункте 1 но с более понятным названием для исключения путаницы и ошибок.
3. CRC16_CELL суммирует разряды только одной ячейки и даёт результат в hex-виде двумя разрядами, при переполнении старшие разряды отбрасываем.
12A2=B4
01FF=00
F0F=1E
01A0=A1

Спасибо.
 
Ответить
СообщениеДобрый день.
Для реинжиниринга эл.устройства нужно проанализировать поток данных проходящих по RS232.
Все данные в HEX.
Нужен макрос который бы суммировал ячейки без перевода в "десятичные".
На данный момент пользуемся именно переводами в десятичные, затем все необходимые вычитания\сложения и после обратный перевод в hex.
Данных много а работа по сути изыскательская. Наличие большого числа преобразований увеличивает колл ошибок (человеческий фактор).
Большая просьба для тех у кого есть решение - поделитесь пожалуйста.
Три макроса:
1. SUM_HEX суммирует указанные hex-ячейки и даёт результат hex в заданной разрядности. Этот же макрос должен работать и на вычитание.
12+A2+01=B5
B5-CD=FE8
2. CRC16 суммирует указ hex-ячейки и результат даёт в hex-виде только 2 разрядами ( 00 .... FF ). Старшие разряды отбрасываем. По сути это та же сумма что и в пункте 1 но с более понятным названием для исключения путаницы и ошибок.
3. CRC16_CELL суммирует разряды только одной ячейки и даёт результат в hex-виде двумя разрядами, при переполнении старшие разряды отбрасываем.
12A2=B4
01FF=00
F0F=1E
01A0=A1

Спасибо.

Автор - allert
Дата добавления - 28.09.2014 в 18:35
AndreTM Дата: Воскресенье, 28.09.2014, 19:45 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Вы в курсе о наличии в языке возможности указывать систему счисления?
&128 = 1010, &258 = 2110
&H1816 = 2410? &HFF16 = 25510
А также наличия (в вашем случае) функции HEX() ?

Остаётся только вопрос - в каком виде хранятся эти ваши "hex-данные" в ячейках... :)
Рисуйте примеры исходников... И не нарушайте Правила форума :)


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеВы в курсе о наличии в языке возможности указывать систему счисления?
&128 = 1010, &258 = 2110
&H1816 = 2410? &HFF16 = 25510
А также наличия (в вашем случае) функции HEX() ?

Остаётся только вопрос - в каком виде хранятся эти ваши "hex-данные" в ячейках... :)
Рисуйте примеры исходников... И не нарушайте Правила форума :)

Автор - AndreTM
Дата добавления - 28.09.2014 в 19:45
allert Дата: Воскресенье, 28.09.2014, 21:48 | Сообщение № 3
Группа: Гости
Нет, я не в курсе о наличии в языке возможности указывать систему исчисления.
Я не программист, у меня другая профессия.

На данный момент hex данные хранятся в виде текста и чисел и оказались они в ячейках после копирования их из другой программы.
Нарисовать нечего - обычные hex-числа 00.....FF которые были сняты с сом порта. Каждое число в отдельной ячейке. Пытаемся понять как работал старый прибор.

У меня имеется макрос XOR_HEX который любезно предоставил мне один хороший человек. Занимает размер всего 3 строки в VB. Этим макросом я ксорю ячейки как мне вздумается. Родные функции Excel этого не позволяют ( Ex2007 ).
Хотелось бы иметь в дополнение и функции суммы для HEX.
 
Ответить
СообщениеНет, я не в курсе о наличии в языке возможности указывать систему исчисления.
Я не программист, у меня другая профессия.

На данный момент hex данные хранятся в виде текста и чисел и оказались они в ячейках после копирования их из другой программы.
Нарисовать нечего - обычные hex-числа 00.....FF которые были сняты с сом порта. Каждое число в отдельной ячейке. Пытаемся понять как работал старый прибор.

У меня имеется макрос XOR_HEX который любезно предоставил мне один хороший человек. Занимает размер всего 3 строки в VB. Этим макросом я ксорю ячейки как мне вздумается. Родные функции Excel этого не позволяют ( Ex2007 ).
Хотелось бы иметь в дополнение и функции суммы для HEX.

Автор - allert
Дата добавления - 28.09.2014 в 21:48
doober Дата: Вторник, 30.09.2014, 21:44 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010
Применение
d = HEXOperation("FF", "1F")
d1 = HEXOperation("CF", "FFF", "-")
d2 = HEXOperation("1F", "FF", "*")

[vba]
Код
Function HEXOperation(H1, H2, Optional Operator As String = "+") As String
     HEXOperation = ""
     Select Case Operator
     Case "+"
         HEXOperation = Hex(Val("&H" & H1) + Val("&H" & H2))
     Case "-"
         HEXOperation = Hex(Val("&H" & H1) - Val("&H" & H2))
     Case "*"
         HEXOperation = Hex(Val("&H" & H1) * Val("&H" & H2))
     End Select
End Function
[/vba]


 
Ответить
СообщениеПрименение
d = HEXOperation("FF", "1F")
d1 = HEXOperation("CF", "FFF", "-")
d2 = HEXOperation("1F", "FF", "*")

[vba]
Код
Function HEXOperation(H1, H2, Optional Operator As String = "+") As String
     HEXOperation = ""
     Select Case Operator
     Case "+"
         HEXOperation = Hex(Val("&H" & H1) + Val("&H" & H2))
     Case "-"
         HEXOperation = Hex(Val("&H" & H1) - Val("&H" & H2))
     Case "*"
         HEXOperation = Hex(Val("&H" & H1) * Val("&H" & H2))
     End Select
End Function
[/vba]

Автор - doober
Дата добавления - 30.09.2014 в 21:44
allert Дата: Вторник, 30.09.2014, 23:58 | Сообщение № 5
Группа: Гости
to doober
да, работает, спасибо огромное

для всех кто так же как я искал готовые функции но так и не нашёл
вот ещё несколько вариантов, которые рабочие как и вариант от doober
[vba]
Код
-------------
Function SUM_HEX(i, j As String) As String
SUM_HEX = Hex(Val("&H" & i) + Val("&H" & j))
End Function
----------------
Function SUB_HEX(i, j As String) As String
SUB_HEX = Hex(Val("&H" & i) - Val("&H" & j))
End Function
----------------
Function SUM_HEX_RANGE(rng As Range)
For Each cell In rng
a = a + Application.WorksheetFunction.Hex2Dec(cell) + 0
Next
SUM_HEX_RANGE = Application.WorksheetFunction.Dec2Hex(a)
End Function
----------------
Function SumHex(r As Range) As String
Dim cell As Range
Dim iSum As Long

For Each cell In r
If Len(cell.Text) Then iSum = iSum + ("&H" & cell.Value2)
Next cell
SumHex = Hex(iSum)
End Function
-----------------
[/vba]
 
Ответить
Сообщениеto doober
да, работает, спасибо огромное

для всех кто так же как я искал готовые функции но так и не нашёл
вот ещё несколько вариантов, которые рабочие как и вариант от doober
[vba]
Код
-------------
Function SUM_HEX(i, j As String) As String
SUM_HEX = Hex(Val("&H" & i) + Val("&H" & j))
End Function
----------------
Function SUB_HEX(i, j As String) As String
SUB_HEX = Hex(Val("&H" & i) - Val("&H" & j))
End Function
----------------
Function SUM_HEX_RANGE(rng As Range)
For Each cell In rng
a = a + Application.WorksheetFunction.Hex2Dec(cell) + 0
Next
SUM_HEX_RANGE = Application.WorksheetFunction.Dec2Hex(a)
End Function
----------------
Function SumHex(r As Range) As String
Dim cell As Range
Dim iSum As Long

For Each cell In r
If Len(cell.Text) Then iSum = iSum + ("&H" & cell.Value2)
Next cell
SumHex = Hex(iSum)
End Function
-----------------
[/vba]

Автор - allert
Дата добавления - 30.09.2014 в 23:58
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Создание макроса суммы в HEX
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!