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

Вход

Регистрация

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

 

= Мир MS Excel/Внести в ячейку значения, начиная с введенного пользователем - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Внести в ячейку значения, начиная с введенного пользователем (Макросы/Sub)
Внести в ячейку значения, начиная с введенного пользователем
nurgaliev Дата: Вторник, 02.02.2016, 08:06 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день, всем!

Существует необходимость когда в одном из полей внесено, например "12А", а в другие ячейки нужно внести определенные значения по условию (в поле Части стоит, например, 6), начиная как раз-таки с "12А", по примеру: "12А, 12В, 13А, 13В, 14А, 14В" (получается всего 6 частей)

Таким образом, мне нужен алгоритм распознавания строки ("12А") и последовательное внесение в другие строки значения, которые зависят от Частей, начинающиеся с того, что внесено в первое поле, и общее количество которых будет ровняться полю Части.

Ячейка1 - 12А
Ячейка2 - 6
Значит, в Ячейке3 - 12А, 12В, 13А, 13В, 14А, 14В

Команды отделения строки от цифр, по частям и так далее (mid, len, left, right) мне не особо знакомы. Мне нужен код, который соединит эти все функции (если я на правильном пути по решению этой проблемы).

Спасибо
 
Ответить
СообщениеДобрый день, всем!

Существует необходимость когда в одном из полей внесено, например "12А", а в другие ячейки нужно внести определенные значения по условию (в поле Части стоит, например, 6), начиная как раз-таки с "12А", по примеру: "12А, 12В, 13А, 13В, 14А, 14В" (получается всего 6 частей)

Таким образом, мне нужен алгоритм распознавания строки ("12А") и последовательное внесение в другие строки значения, которые зависят от Частей, начинающиеся с того, что внесено в первое поле, и общее количество которых будет ровняться полю Части.

Ячейка1 - 12А
Ячейка2 - 6
Значит, в Ячейке3 - 12А, 12В, 13А, 13В, 14А, 14В

Команды отделения строки от цифр, по частям и так далее (mid, len, left, right) мне не особо знакомы. Мне нужен код, который соединит эти все функции (если я на правильном пути по решению этой проблемы).

Спасибо

Автор - nurgaliev
Дата добавления - 02.02.2016 в 08:06
nurgaliev Дата: Вторник, 02.02.2016, 08:24 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
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
Дата добавления - 02.02.2016 в 08:24
buchlotnik Дата: Вторник, 02.02.2016, 09:05 | Сообщение № 3
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
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
[/vba]
К сообщению приложен файл: nurgaliev.xlsm (14.2 Kb)
 
Ответить
Сообщение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
[/vba]

Автор - buchlotnik
Дата добавления - 02.02.2016 в 09:05
Wasilich Дата: Вторник, 02.02.2016, 13:02 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
И мой пример для ячеек А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
[/vba]
К сообщению приложен файл: nurgaliev.xls (22.5 Kb)


Сообщение отредактировал Wasilic - Вторник, 02.02.2016, 13:07
 
Ответить
СообщениеИ мой пример для ячеек А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
[/vba]

Автор - Wasilich
Дата добавления - 02.02.2016 в 13:02
nurgaliev Дата: Вторник, 02.02.2016, 13:15 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
buchlotnik, спасибо вам за код

я не могу встроить данную функцию в процедуру, где формируются результат и количество частей

вопрос таков: как вызвать функцию внутри процедуры макроса?

переменная а - это значение одной ячейки в таблице (начальный номер)
переменная b - это значение одной ячейки в определенном столбце (кол-во частей)

Результат вписывается в соседнем от Кол-во Частей столбце (высчитывается для каждого случая Кол-во Частей отдельно)

циклы для просмотра каждой строки столбца Кол-во Частей предусмотрел, но видимо не так как нужно

спасибо
 
Ответить
Сообщениеbuchlotnik, спасибо вам за код

я не могу встроить данную функцию в процедуру, где формируются результат и количество частей

вопрос таков: как вызвать функцию внутри процедуры макроса?

переменная а - это значение одной ячейки в таблице (начальный номер)
переменная b - это значение одной ячейки в определенном столбце (кол-во частей)

Результат вписывается в соседнем от Кол-во Частей столбце (высчитывается для каждого случая Кол-во Частей отдельно)

циклы для просмотра каждой строки столбца Кол-во Частей предусмотрел, но видимо не так как нужно

спасибо

Автор - nurgaliev
Дата добавления - 02.02.2016 в 13:15
buchlotnik Дата: Вторник, 02.02.2016, 13:55 | Сообщение № 6
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
так нужно? [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
[/vba]
К сообщению приложен файл: nurgaliev-1-.xlsm (14.8 Kb)
 
Ответить
Сообщениетак нужно? [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
[/vba]

Автор - buchlotnik
Дата добавления - 02.02.2016 в 13:55
nurgaliev Дата: Среда, 03.02.2016, 13:00 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
всем спасибо, все получилось)
 
Ответить
Сообщениевсем спасибо, все получилось)

Автор - nurgaliev
Дата добавления - 03.02.2016 в 13:00
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Внести в ячейку значения, начиная с введенного пользователем (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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