Существует необходимость когда в одном из полей внесено, например "12А", а в другие ячейки нужно внести определенные значения по условию (в поле Части стоит, например, 6), начиная как раз-таки с "12А", по примеру: "12А, 12В, 13А, 13В, 14А, 14В" (получается всего 6 частей)
Таким образом, мне нужен алгоритм распознавания строки ("12А") и последовательное внесение в другие строки значения, которые зависят от Частей, начинающиеся с того, что внесено в первое поле, и общее количество которых будет ровняться полю Части.
Команды отделения строки от цифр, по частям и так далее (mid, len, left, right) мне не особо знакомы. Мне нужен код, который соединит эти все функции (если я на правильном пути по решению этой проблемы).
Спасибо
Добрый день, всем!
Существует необходимость когда в одном из полей внесено, например "12А", а в другие ячейки нужно внести определенные значения по условию (в поле Части стоит, например, 6), начиная как раз-таки с "12А", по примеру: "12А, 12В, 13А, 13В, 14А, 14В" (получается всего 6 частей)
Таким образом, мне нужен алгоритм распознавания строки ("12А") и последовательное внесение в другие строки значения, которые зависят от Частей, начинающиеся с того, что внесено в первое поле, и общее количество которых будет ровняться полю Части.
Команды отделения строки от цифр, по частям и так далее (mid, len, left, right) мне не особо знакомы. Мне нужен код, который соединит эти все функции (если я на правильном пути по решению этой проблемы).
nilem, Ячейка1 имеет только такой формат - Цифра + Литера (от А до В) - примеры: 12А или 26В или 98А Ячейка2 имеет только формат Цифра (от 1 до 100) - по Вашим примерам: 1 или 5 или 8 или 25
Пример: 26В (ячейка1), 8 (ячейка2), значит в ячейке3 будет "26В, 27А, 27В, 28А, 28В, 29А, 29В, 30А" (всего 8 частей как из ячейки2, где начальное значение берется из ячейки1)
nilem, Ячейка1 имеет только такой формат - Цифра + Литера (от А до В) - примеры: 12А или 26В или 98А Ячейка2 имеет только формат Цифра (от 1 до 100) - по Вашим примерам: 1 или 5 или 8 или 25
Пример: 26В (ячейка1), 8 (ячейка2), значит в ячейке3 будет "26В, 27А, 27В, 28А, 28В, 29А, 29В, 30А" (всего 8 частей как из ячейки2, где начальное значение берется из ячейки1)nurgaliev
Function nurgaliev(a As Range, b As Range) As String Application.Volatile Dim число$, буква$, результат$, i& результат = a буква = Right(a, 1) число = Left(a, Len(a) - 1) For i = 1 To b - 1 If буква = "A" Then буква = "B" результат = результат & ";" & число & буква Else буква = "A" число = число + 1 результат = результат & ";" & число & буква End If Next i nurgaliev = результат End Function
[/vba]
UDF "в лоб":[vba]
Код
Function nurgaliev(a As Range, b As Range) As String Application.Volatile Dim число$, буква$, результат$, i& результат = a буква = Right(a, 1) число = Left(a, Len(a) - 1) For i = 1 To b - 1 If буква = "A" Then буква = "B" результат = результат & ";" & число & буква Else буква = "A" число = число + 1 результат = результат & ";" & число & буква End If Next i nurgaliev = результат End Function
Sub www() Dim X$, Y&, S$, C&, i& Range("C1") = "" X = Range("A1") Y = Range("B1") S = Right(X, 1) C = Val(Left(X, Len(X) - 1)) Range("C1") = X For i = 1 To Y - 1 If S = "A" Then S = "B" Else S = "A" C = C + 1 End If Range("C1") = Range("C1") & "; " & C & S Next i End Sub
[/vba]
И мой пример для ячеек А1 и В1 [vba]
Код
Sub www() Dim X$, Y&, S$, C&, i& Range("C1") = "" X = Range("A1") Y = Range("B1") S = Right(X, 1) C = Val(Left(X, Len(X) - 1)) Range("C1") = X For i = 1 To Y - 1 If S = "A" Then S = "B" Else S = "A" C = C + 1 End If Range("C1") = Range("C1") & "; " & C & S Next i End Sub
Function nurgaliev(ByVal a, ByVal b) As String Application.Volatile Dim число$, буква$, результат$, i& результат = a буква = Right(a, 1) число = Left(a, Len(a) - 1) For i = 1 To b - 1 If буква = "A" Then буква = "B" результат = результат & ";" & число & буква Else буква = "A" число = число + 1 результат = результат & ";" & число & буква End If Next i nurgaliev = результат End Function
Sub macros() a = [a1] b = [a2] [b1] = nurgaliev(a, b) End Sub
[/vba]
так нужно? [vba]
Код
Function nurgaliev(ByVal a, ByVal b) As String Application.Volatile Dim число$, буква$, результат$, i& результат = a буква = Right(a, 1) число = Left(a, Len(a) - 1) For i = 1 To b - 1 If буква = "A" Then буква = "B" результат = результат & ";" & число & буква Else буква = "A" число = число + 1 результат = результат & ";" & число & буква End If Next i nurgaliev = результат End Function
Sub macros() a = [a1] b = [a2] [b1] = nurgaliev(a, b) End Sub