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

Вход

Регистрация

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

 

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

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

Excel 2010
Добрый день!

Может кто помочь и написать макрос со следующими задачами:

1 задача. При выделении диапазона ячеек с 1 по 15 строчку столбца №1 нужно, чтобы программа/макрос натыкаясь на пустые строчки в этом столбце прописывала в столбец №3 значение "М1", при следующей пустой значение "М2" и т.д. Если в столбце №1 есть значения то прописывается "А1", после того как встречается пустая и за ней строки со значениями прописывается уже "А2" и так до конца выделенного диапазона.

2 задача. При выделении диапазона ячеек с 1 по 15 строчку столбца №2 нужно, чтобы программа/макрос натыкаясь на значение "В" прописывал в столбец №3 значение "М1" и ниже проставляются значения "А1" до того как встретится значение "D", при повторной встрече значения "В" прописывается уже "М2" и далее "А2".

Если это дико сложно, то подскажите хотя бы на куски кода. А то я с языком VBA не знаком совсем. Буду очень благодарен!

Вспомогательный рисунок.



Сообщение отредактировал Vatnik - Четверг, 20.03.2014, 17:12
 
Ответить
СообщениеДобрый день!

Может кто помочь и написать макрос со следующими задачами:

1 задача. При выделении диапазона ячеек с 1 по 15 строчку столбца №1 нужно, чтобы программа/макрос натыкаясь на пустые строчки в этом столбце прописывала в столбец №3 значение "М1", при следующей пустой значение "М2" и т.д. Если в столбце №1 есть значения то прописывается "А1", после того как встречается пустая и за ней строки со значениями прописывается уже "А2" и так до конца выделенного диапазона.

2 задача. При выделении диапазона ячеек с 1 по 15 строчку столбца №2 нужно, чтобы программа/макрос натыкаясь на значение "В" прописывал в столбец №3 значение "М1" и ниже проставляются значения "А1" до того как встретится значение "D", при повторной встрече значения "В" прописывается уже "М2" и далее "А2".

Если это дико сложно, то подскажите хотя бы на куски кода. А то я с языком VBA не знаком совсем. Буду очень благодарен!

Вспомогательный рисунок.


Автор - Vatnik
Дата добавления - 20.03.2014 в 17:11
wild_pig Дата: Четверг, 20.03.2014, 18:39 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 517
Репутация: 97 ±
Замечаний: 0% ±

2003, 2013
Макрос для вспомогательного файла
[vba]
Код
Sub uuu()
     m = 1
     a = 1
     For Each c In Selection
         If c = "" Then
             c.Offset(0, 1) = "М" & m
             m = m + 1
         End If
         If c <> "" Then
             c.Offset(0, 1) = "А" & a
             a = a + 1
         End If
     Next
End Sub
[/vba]
 
Ответить
СообщениеМакрос для вспомогательного файла
[vba]
Код
Sub uuu()
     m = 1
     a = 1
     For Each c In Selection
         If c = "" Then
             c.Offset(0, 1) = "М" & m
             m = m + 1
         End If
         If c <> "" Then
             c.Offset(0, 1) = "А" & a
             a = a + 1
         End If
     Next
End Sub
[/vba]

Автор - wild_pig
Дата добавления - 20.03.2014 в 18:39
Wasilich Дата: Четверг, 20.03.2014, 18:48 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
подскажите хотя бы на куски кода. А то я с языком VBA не знаком совсем.
Вот еще кусок, правда целый. :)
[vba]
Код
Sub Задача_1()
   If Selection.Column <> 1 Then Exit Sub
   If Selection.Rows.Count < 2 Then Exit Sub
   Range("C:C").ClearContents
   Dim M&, A&, I&
   M = 1: A = 1
   For I = Selection.Row To Selection.Row + Selection.Rows.Count - 1
     If Cells(I, 1) = "" Then
        Cells(I, 3) = "M" & M: M = M + 1
     Else
        Cells(I, 3) = "A" & A: A = A + 1
     End If
   Next
End Sub
[/vba]
 
Ответить
Сообщение
подскажите хотя бы на куски кода. А то я с языком VBA не знаком совсем.
Вот еще кусок, правда целый. :)
[vba]
Код
Sub Задача_1()
   If Selection.Column <> 1 Then Exit Sub
   If Selection.Rows.Count < 2 Then Exit Sub
   Range("C:C").ClearContents
   Dim M&, A&, I&
   M = 1: A = 1
   For I = Selection.Row To Selection.Row + Selection.Rows.Count - 1
     If Cells(I, 1) = "" Then
        Cells(I, 3) = "M" & M: M = M + 1
     Else
        Cells(I, 3) = "A" & A: A = A + 1
     End If
   Next
End Sub
[/vba]

Автор - Wasilich
Дата добавления - 20.03.2014 в 18:48
Vatnik Дата: Четверг, 20.03.2014, 18:49 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
wild_pig, огромное спасибо. Вечером потестим. :D
 
Ответить
Сообщениеwild_pig, огромное спасибо. Вечером потестим. :D

Автор - Vatnik
Дата добавления - 20.03.2014 в 18:49
Vatnik Дата: Четверг, 20.03.2014, 18:50 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Wasilic, это еще лучше. Благодарствую.
 
Ответить
СообщениеWasilic, это еще лучше. Благодарствую.

Автор - Vatnik
Дата добавления - 20.03.2014 в 18:50
Vatnik Дата: Четверг, 20.03.2014, 19:26 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Wasilic, потестил. Значения "М" правильно проставляет (столбец №3), а вот с "А" что-то не то. Должно быть как в столбце №4.



Можно это как то решить?
 
Ответить
СообщениеWasilic, потестил. Значения "М" правильно проставляет (столбец №3), а вот с "А" что-то не то. Должно быть как в столбце №4.



Можно это как то решить?

Автор - Vatnik
Дата добавления - 20.03.2014 в 19:26
Pelena Дата: Четверг, 20.03.2014, 19:32 | Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 19187
Репутация: 4421 ±
Замечаний: ±

Excel 365 & Mac Excel
Можно это как то решить?

Может, пора уже файл приложить с примером, а не картинку


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
Можно это как то решить?

Может, пора уже файл приложить с примером, а не картинку

Автор - Pelena
Дата добавления - 20.03.2014 в 19:32
Vatnik Дата: Четверг, 20.03.2014, 19:41 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Pelena, Хорошо. Приложил.
К сообщению приложен файл: 8274876.xlsx (9.2 Kb)
 
Ответить
СообщениеPelena, Хорошо. Приложил.

Автор - Vatnik
Дата добавления - 20.03.2014 в 19:41
RAN Дата: Четверг, 20.03.2014, 19:51 | Сообщение № 9
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Чтой-то мне кажется, что так надоть.
[vba]
Код
Sub Задача_1()
     If Selection.Column <> 1 Then Exit Sub
     If Selection.Rows.Count < 2 Then Exit Sub
     Range("C:C").ClearContents
     Dim M&, A&, I&, MM&, AA&
     Dim flag1 As Boolean, flag2 As Boolean
     For I = Selection.Row To Selection.Row + Selection.Rows.Count - 1
         If Cells(I, 1) = "" Then
             If Not flag1 Then
                 MM = MM + 1
                 M = MM
                 flag1 = True
                 flag2 = False
             End If
             Cells(I, 3) = "M" & M
         Else
             If Not flag2 Then
                 AA = AA + 1
                 A = AA
                 flag2 = True
                 flag1 = False
             End If
             Cells(I, 3) = "A" & A
         End If
     Next
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеЧтой-то мне кажется, что так надоть.
[vba]
Код
Sub Задача_1()
     If Selection.Column <> 1 Then Exit Sub
     If Selection.Rows.Count < 2 Then Exit Sub
     Range("C:C").ClearContents
     Dim M&, A&, I&, MM&, AA&
     Dim flag1 As Boolean, flag2 As Boolean
     For I = Selection.Row To Selection.Row + Selection.Rows.Count - 1
         If Cells(I, 1) = "" Then
             If Not flag1 Then
                 MM = MM + 1
                 M = MM
                 flag1 = True
                 flag2 = False
             End If
             Cells(I, 3) = "M" & M
         Else
             If Not flag2 Then
                 AA = AA + 1
                 A = AA
                 flag2 = True
                 flag1 = False
             End If
             Cells(I, 3) = "A" & A
         End If
     Next
End Sub
[/vba]

Автор - RAN
Дата добавления - 20.03.2014 в 19:51
Vatnik Дата: Четверг, 20.03.2014, 19:58 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
RAN, Ага. Заработало. Спасибки. =)
 
Ответить
СообщениеRAN, Ага. Заработало. Спасибки. =)

Автор - Vatnik
Дата добавления - 20.03.2014 в 19:58
Wasilich Дата: Пятница, 21.03.2014, 10:39 | Сообщение № 11
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Должно быть как в столбце №4.
Ото ж! Был бы пример в файле, а не на картинке, мож и узрел бы, что не правильно сделал и сделал бы правильно. :D
Такой вариант:
 
Ответить
Сообщение
Должно быть как в столбце №4.
Ото ж! Был бы пример в файле, а не на картинке, мож и узрел бы, что не правильно сделал и сделал бы правильно. :D
Такой вариант:

Автор - Wasilich
Дата добавления - 21.03.2014 в 10:39
Vatnik Дата: Пятница, 21.03.2014, 12:55 | Сообщение № 12
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Wasilic, извиняйте. Думал картинкой наглядней.
 
Ответить
СообщениеWasilic, извиняйте. Думал картинкой наглядней.

Автор - Vatnik
Дата добавления - 21.03.2014 в 12:55
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос для вставки значений с условием (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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