Есть большое количество тринадцатизначных чисел.Каждой цифре числа соответствует символ,в зависимости от первой цифры х, после которой идет разная последовательность набора формул. Функция ЕСЛИ допускает только 7 вариаций,а мне надо больше вариаций.Как решить проблему?
Есть большое количество тринадцатизначных чисел.Каждой цифре числа соответствует символ,в зависимости от первой цифры х, после которой идет разная последовательность набора формул. Функция ЕСЛИ допускает только 7 вариаций,а мне надо больше вариаций.Как решить проблему?serrgey
Ничего не понял, что надо? Покажите хот один результат, как должно выглядеть. Поменять каждую цифру на символ? из какой таблицы брать соответствие? Из первой можно ВПР или ПРОСМОТР, из второй ГПР или ПОИСКПОЗ, вариантов много знать бы цель.
Ничего не понял, что надо? Покажите хот один результат, как должно выглядеть. Поменять каждую цифру на символ? из какой таблицы брать соответствие? Из первой можно ВПР или ПРОСМОТР, из второй ГПР или ПОИСКПОЗ, вариантов много знать бы цель.gling
цитата удалена Похоже,только у первой цифры (х) есть тоже свой символ соответствующий в таблице, например у 4 - ' И в конце результата символ ! [moder]Не надо цитировать пост целиком. Это нарушение Правил форума[/moder]
цитата удалена Похоже,только у первой цифры (х) есть тоже свой символ соответствующий в таблице, например у 4 - ' И в конце результата символ ! [moder]Не надо цитировать пост целиком. Это нарушение Правил форума[/moder]serrgey
Сообщение отредактировал Pelena - Воскресенье, 15.11.2015, 18:34
Для разнообразия - вариант с пользовательской функцией
[vba]
Код
Public Function getEAN13(psource) As String
Dim source As String Dim target As String Dim arrY As Variant Dim c As String Dim y As String Dim i As Integer
source = Right("0" & psource, 13)
arrY = Array("LLLLLL", "LLSLSS", "LLSSLS", "LLSSSL", "LSLLSS", "LSSLLS", "LSSSLL", "LSLSLS", "LSLSSL", "LSSLSL") c = Mid(source, 1, 1) y = arrY(c)
target = Mid("#$%&'()*+,", c + 1, 1) & "!" For i = 2 To 7 c = Mid(source, i, 1) Select Case Mid(y, i - 1, 1) Case "L" target = target & Mid("0123456789", c + 1, 1) Case "S" target = target & Mid("ABCDEFGHIJ", c + 1, 1) End Select Next i
target = target & "-" For i = 8 To 13 c = Mid(source, i, 1) target = target & Mid("abcdefghij", c + 1, 1) Next i
getEAN13 = target & "!"
End Function
[/vba]
Для разнообразия - вариант с пользовательской функцией
[vba]
Код
Public Function getEAN13(psource) As String
Dim source As String Dim target As String Dim arrY As Variant Dim c As String Dim y As String Dim i As Integer
source = Right("0" & psource, 13)
arrY = Array("LLLLLL", "LLSLSS", "LLSSLS", "LLSSSL", "LSLLSS", "LSSLLS", "LSSSLL", "LSLSLS", "LSLSSL", "LSSLSL") c = Mid(source, 1, 1) y = arrY(c)
target = Mid("#$%&'()*+,", c + 1, 1) & "!" For i = 2 To 7 c = Mid(source, i, 1) Select Case Mid(y, i - 1, 1) Case "L" target = target & Mid("0123456789", c + 1, 1) Case "S" target = target & Mid("ABCDEFGHIJ", c + 1, 1) End Select Next i
target = target & "-" For i = 8 To 13 c = Mid(source, i, 1) target = target & Mid("abcdefghij", c + 1, 1) Next i