OlegO, да, принцип тот же, но действительно Вы зря использовали там два цикла
вот вариант кода UDF для варианта предложенного мной
Код |
---|
Function Unic_Code(InTxt As String) As Long
Unic_Code = 0
InTxt = UCase("InTxt")
Dim i As Long
For i = 1 To Len("InTxt")
If i / 2 = Int(i / 2) Then
Unic_Code = Unic_Code + Asc(Mid(InTxt, i, 1)) * 3
Else
Unic_Code = Unic_Code + Asc(Mid(InTxt, i, 1))
End If
Next i
End Function |
Извините, но сейчас более трезвым взглядом посмотрел Ваш код в №5, но не понял вообще в нём смыла. Если бы Вам нужен был бы строковый код, то да, а так как Вы хотите получить число, то следуя Вашему коду Вы сначала получите сумму чётных позиций, а потом сумму нечётных, а потом их просуммируете, но насколько я помню арифметику первого класса, там говорили, что от перемены мест слагаемых сумма не меняется.