Страницы: 1 2 След.
RSS
Расчёт значения при выборе определенных данных из выпадающего списка
 
Здравствуйте! Подобного на форуме не нашла((  Excel 2007. Макросы практически никогда не писала, один и то давно. Есть два листа в книге. На одном перечень норм(наименование работы и норма), на другом (Смета)из выпадающего списка выбираем наименование работы, норма соответственно сама отображается. Но есть такие работы, у которых нужно рассчитать норму другую. Например,  таблица внизу. Если выбрать замену шлейфа, и поставить количество не 1,а два и более, то норма должна быть другой, чем для одного шлейфа. И таких наименований работ много. Как вообще всё это можно грамотно сделать.
Замена  шлейфа    отпайки  на  ВЛ    до  1 кВ            шлейф0,9
Замена  шлейфа  отпайки    на  ВЛ  до    10 кВ            шлейф0,45
При  замене более  одного    шлейфа  на опоре на  каждый    последующий  шлейф  добавлять            шлейф0,25
Изменено: Ulik - 14.09.2018 08:16:36
 
Выделить пустые строки, уудалить, обязательно сохранить. Размер файла намного уменьшится. Замените файл в первом сообщении.
 
Спасибо за подсказку, в примере оставила только одну строчку и лист, откуда в выпадающий список выбирать данные. Ничего лишнего
Изменено: Ulik - 13.09.2018 16:11:18
 
Пользователь должен ввести цифру (единицу измерения: метр,шлейф или иную), и в соответствии с выбранным значением из выпадающего списка(при условии,что есть другая норма для данного значения при единице измерения выше 1), нужно рассчитать эту норму и отобразить в ячейке. например, если шлейф = 1, то норма 0,9
если шлейф=2, то норма уже 0,9+0,25, если шлейф=3, то норма 0,9+0,25+0,25. на каждый шлейф свыше 1, добавляется 0,25 к стандартной норме.
Изменено: Ulik - 13.09.2018 17:02:53
 
Цитата
Ничего лишнего
А 4 скрытых листа?
 
мда, документ не мой, не знала,прошу прощения, изменила
Изменено: Ulik - 14.09.2018 08:16:52
 
Цитата
Пользователь должен ввести цифру (единицу измерения: метр,шлейф или иную), и в соответствии с выбранным значением из выпадающего списка
В модуль листа СМЕТА ОСТ
Код
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Columns("A")) Is Nothing Then
  Application.EnableEvents = False
Dim FoundCell As Range
Dim Norma As Double
 With Worksheets("Работы")
    Set FoundCell = .Columns(1).Find(Target, , xlValues, xlWhole)
     If Not FoundCell Is Nothing Then
       Norma = FoundCell.Offset(, 2)
       If Target.Offset(, 2) = 1 Then
         Target.Offset(, 3) = Norma
       Else
         Target.Offset(, 3) = Norma + 0.25 * (Target.Offset(, 2) - 1)
       End If
     End If
 End With
 End If
  Application.EnableEvents = True
End Sub
Вводите в столбец С количество, затем из выпадающего списка выбираете работу
 
Спасибо, но норма не пересчитывается, попробую разобраться
 
Цитата
но норма не пересчитывается
Макрос в модуль листа. Срабатывает при изменении в столбце А (при выборе из выпадающего списка)
 
Если количество больше единицы,начинается высчитываться норма сверху
 
Норма изменяется в той строке, где был выбор из списка
 
Это я понимаю. Выбираю из списка первую строку, ставиться норма 0,9, и так далее. Но, при вводе количества больше 1, к норме добавляется 0,25. То есть, со списка выбрала первую строку и количество 1, тогда просто норма 0,9.
Выбираю первую строку и количество 2, то уже к 0,9+0,25.
На каждое последующее количество добавляется 0,25
 
Ulik, может просто формулой?
Код
=ЕСЛИ(C4<=1;ИНДЕКС(Работы!$A:$C;ПОИСКПОЗ('СМЕТА ОСТ'!$A4;работы;0);3);ИНДЕКС(Работы!$A:$C;ПОИСКПОЗ('СМЕТА ОСТ'!$A4;работы;0);3)+C4*0,25)
Изменено: a.i.mershik - 14.09.2018 12:10:10
Не бойтесь совершенства. Вам его не достичь.
 
Сначала проставляете количество, затем выбор работы
 
я бы с удовольствием формулой, но у меня таких случаев около 50 и с разными условиями
 
Ulik, ну если сделать доп столбце с колонкой в которой будет указано условие...и на него ссылку...
Не бойтесь совершенства. Вам его не достичь.
 
Kuzmich,да теперь считает, только такой порядок может быть? сначала количество,потом список?
 
a.i.mershik,да,верно, просто делать формулу на каждую работу
 
Цитата
только такой порядок может быть?
Если вы хотите другой порядок, то надо переделывать макрос под изменение или работы или количества
 
Kuzmich,Пользователь выбирает сначала работу,потом вводит количество.
И если добавить работы с другими нормами, то под каждые нормы (не 0,25 выше 1), нужно отдельно всё описывать
Изменено: Ulik - 14.09.2018 12:30:39
 
Код
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Columns("A:C")) Is Nothing Then
  Application.EnableEvents = False
Dim FoundCell As Range
Dim Norma As Double
 With Worksheets("Работы")
    Set FoundCell = .Columns(1).Find(Cells(Target.Row, 1), , xlValues, xlWhole)
     If Not FoundCell Is Nothing Then
       Norma = FoundCell.Offset(, 2)
       If Cells(Target.Row, 3) = 1 Then
         Cells(Target.Row, 4) = Norma
       Else
         Cells(Target.Row, 4) = Norma + 0.25 * (Cells(Target.Row, 3) - 1)
       End If
     End If
 End With
 End If
  Application.EnableEvents = True
End Sub
 
А если добавляются другие работы с другими нормами
 
Ulik, так может все таки вам потратить время и создать список работ и рядом коэф. который им соответствует и все..т.е. если:
пер-мка - 0,3
шлейф - 0,25 и потом все просто можно сделать
Не бойтесь совершенства. Вам его не достичь.
 
a.i.mershik,да, но хотелось бы знать,как это можно ещё грамотно сделать
Я параллельно делаю сейчас 2 варианта
 
Ulik, ну просто насоклько мне известно  в макрос тоже это все нужно прописывать..
а так создал  табличку из 2х столбцов наименование работ и коэф. и все.
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
И если добавить работы с другими нормами, то под каждые нормы (не 0,25 выше 1), нужно отдельно всё описывать
На листе работы норма у вас в столбце С, а в столбец D пропишите прибавку
 
Kuzmich,есть нормы,которые пересчитываются, при вводе количества свыше 10, а не 1.
Просто все работы разные и с разными условиями пересчета
 
a.i.mershik,да, это понятно, но ввод делают сами пользователи в Смету и неизвестно,сколько они работ добавят. И если на отдельном листе будут работы и коэффициенты, то как на итоговом листе разместить формулу,которая зависит от количества и с разными нормами
 
Ulik, ну сделайте таблицу работ и соответствующие и нормы...и думаю решение будет.
Не бойтесь совершенства. Вам его не достичь.
 
a.i.mershik,у меня есть таблица работ и нормы, но рассчитать я могу только имея количество, которое вводят пользователи на другом листе. Они же вводят работу и количество работ я тоже не знаю
Изменено: Ulik - 14.09.2018 14:49:45
Страницы: 1 2 След.
Наверх