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

Вход

Регистрация

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

 

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

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

Excel 2007;2010;2016
Доброго времени суток уважаемые форумчане!!!!!
Нуждаюсь в вашей помощи. Есть у меня таблица, в которой работают немножко рукож.... юзвери. Табличка на формулах, которые постоянно данными индивидуумами уничтожаются. Вследствии чего случаются ошибки в планировании, что недопустимо. Вопрос такой. В этой таблице задается количество комплектов деталей в производство. Эти комплекты расписываются подетально. в столбце Е ставится количество деталей на комплект. Необходимо, что бы при проставлении количества комплектов в таблице ( выделено желтым для примера) проставлялось количество деталей в этом комплекте.
P.S То есть надо считать только в тех строках, где в столбце Е стоит число.
К сообщению приложен файл: __New.xlsm (40.3 Kb)


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
СообщениеДоброго времени суток уважаемые форумчане!!!!!
Нуждаюсь в вашей помощи. Есть у меня таблица, в которой работают немножко рукож.... юзвери. Табличка на формулах, которые постоянно данными индивидуумами уничтожаются. Вследствии чего случаются ошибки в планировании, что недопустимо. Вопрос такой. В этой таблице задается количество комплектов деталей в производство. Эти комплекты расписываются подетально. в столбце Е ставится количество деталей на комплект. Необходимо, что бы при проставлении количества комплектов в таблице ( выделено желтым для примера) проставлялось количество деталей в этом комплекте.
P.S То есть надо считать только в тех строках, где в столбце Е стоит число.

Автор - китин
Дата добавления - 24.05.2017 в 08:48
buchlotnik Дата: Среда, 24.05.2017, 09:16 | Сообщение № 2
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
Игорь, жёлтые по какому признаку находить - напротив них пустая ячейка E или слово "чертёж" в С - за что можно цепляться?
 
Ответить
СообщениеИгорь, жёлтые по какому признаку находить - напротив них пустая ячейка E или слово "чертёж" в С - за что можно цепляться?

Автор - buchlotnik
Дата добавления - 24.05.2017 в 09:16
китин Дата: Среда, 24.05.2017, 09:18 | Сообщение № 3
Группа: Модераторы
Ранг: Экселист
Сообщений: 7013
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Миша привет!желтые там где пустая ячейка в столбце Е. в реальном файле они не покрашены, это я для примера[p.s.] у меня там в модуле листа мои жалкие попытки


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852


Сообщение отредактировал китин - Среда, 24.05.2017, 09:19
 
Ответить
СообщениеМиша привет!желтые там где пустая ячейка в столбце Е. в реальном файле они не покрашены, это я для примера[p.s.] у меня там в модуле листа мои жалкие попытки

Автор - китин
Дата добавления - 24.05.2017 в 09:18
Manyasha Дата: Среда, 24.05.2017, 11:54 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Игорь, привет. Так нужно?
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
      Dim lr&, lc&, r&, nextRow As Range
      lr = Cells(Rows.Count, 3).End(xlUp).Row
      lc = Cells(13, Columns.Count).End(xlToLeft).Column - 3
      
      'Если в изменяемом диапазоне больше 1 ячейки, выходим из макроса
      If Target.Count > 1 Then Exit Sub
      'Если изменяем за пределами табицы (в примере F13:R70), выходим из макроса
      If Intersect(Target, Range("f13", Cells(lr, lc))) Is Nothing Then Exit Sub
      
      'Отключаем обработку событи
      Application.EnableEvents = False
      'Запоминаем номер следующей строки в r
      r = Target.Row + 1
      'Если ячейка в этой же строке в столбце е = "" и следующая ячейка в столбце е <>""
      If Cells(Target.Row, "e") = "" And Cells(r, "e") <> "" Then
        'Ищем следующую пустую ячейку в солбце е (она нам нужна,
        'чтобы высчитать диапазон, в котором будем умножать кол-во деталей на кол-во комплектов)
        '+1 в Range("e" & r, "e" & lr + 1) нужен для того, чтобы для последнего чертежа (строка 68)
        'получить корректный диапазон
        Set nextRow = Range("e" & r, "e" & lr + 1).Find(What:="", After:=Range("e" & r))
        'если нашли
        If Not nextRow Is Nothing Then
            'идем по диапазону для текущего чертежа (в примере ячейки между желтыми линиями)
            For Each cell In Target.Offset(1).Resize(nextRow.Row - r)
                'записываем в каждую ячейку кол-во деталей (столбец е) * кол-во комплектов (наша желтая ячейка)
                cell.Value = Cells(cell.Row, "e").Value * Target.Value
            Next cell
        End If
      End If
      Application.EnableEvents = True
End Sub
[/vba]
К сообщению приложен файл: _New-1.xlsm (41.4 Kb)


ЯД: 410013299366744 WM: R193491431804

Сообщение отредактировал Manyasha - Среда, 24.05.2017, 13:09
 
Ответить
СообщениеИгорь, привет. Так нужно?
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
      Dim lr&, lc&, r&, nextRow As Range
      lr = Cells(Rows.Count, 3).End(xlUp).Row
      lc = Cells(13, Columns.Count).End(xlToLeft).Column - 3
      
      'Если в изменяемом диапазоне больше 1 ячейки, выходим из макроса
      If Target.Count > 1 Then Exit Sub
      'Если изменяем за пределами табицы (в примере F13:R70), выходим из макроса
      If Intersect(Target, Range("f13", Cells(lr, lc))) Is Nothing Then Exit Sub
      
      'Отключаем обработку событи
      Application.EnableEvents = False
      'Запоминаем номер следующей строки в r
      r = Target.Row + 1
      'Если ячейка в этой же строке в столбце е = "" и следующая ячейка в столбце е <>""
      If Cells(Target.Row, "e") = "" And Cells(r, "e") <> "" Then
        'Ищем следующую пустую ячейку в солбце е (она нам нужна,
        'чтобы высчитать диапазон, в котором будем умножать кол-во деталей на кол-во комплектов)
        '+1 в Range("e" & r, "e" & lr + 1) нужен для того, чтобы для последнего чертежа (строка 68)
        'получить корректный диапазон
        Set nextRow = Range("e" & r, "e" & lr + 1).Find(What:="", After:=Range("e" & r))
        'если нашли
        If Not nextRow Is Nothing Then
            'идем по диапазону для текущего чертежа (в примере ячейки между желтыми линиями)
            For Each cell In Target.Offset(1).Resize(nextRow.Row - r)
                'записываем в каждую ячейку кол-во деталей (столбец е) * кол-во комплектов (наша желтая ячейка)
                cell.Value = Cells(cell.Row, "e").Value * Target.Value
            Next cell
        End If
      End If
      Application.EnableEvents = True
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 24.05.2017 в 11:54
китин Дата: Среда, 24.05.2017, 12:21 | Сообщение № 5
Группа: Модераторы
Ранг: Экселист
Сообщений: 7013
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Привет Марина. Вроде оно.Щаз попробую совместить с моими "творениями"
[p.s.]а прокомментировать плз!!!! pray


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
СообщениеПривет Марина. Вроде оно.Щаз попробую совместить с моими "творениями"
[p.s.]а прокомментировать плз!!!! pray

Автор - китин
Дата добавления - 24.05.2017 в 12:21
Manyasha Дата: Среда, 24.05.2017, 13:11 | Сообщение № 6
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Игорь, прокомментировала)

[vba]
Код
        If Not nextRow Is Nothing Then
            If nextRow.Row <= lr Then
[/vba]
Сама не поняла, что я хотела этим сказать :D
Код исправила, файл перевложила.


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеИгорь, прокомментировала)

[vba]
Код
        If Not nextRow Is Nothing Then
            If nextRow.Row <= lr Then
[/vba]
Сама не поняла, что я хотела этим сказать :D
Код исправила, файл перевложила.

Автор - Manyasha
Дата добавления - 24.05.2017 в 13:11
китин Дата: Четверг, 25.05.2017, 15:03 | Сообщение № 7
Группа: Модераторы
Ранг: Экселист
Сообщений: 7013
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
ОНО!!! Марина низкий поклон!!!


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
СообщениеОНО!!! Марина низкий поклон!!!

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

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