Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Замена текста на число и вывод суммы VBA, Необходимо выполнить замену текста по заданному принципу
 
Юрий М, виноват, исправил.
Hugo, спасибо, за подсказку. Объем данных не шибко большой, я заметил свою ошибку с циклами. Как можно связать значения отдельных параметров в "ящиках" ОМ, ОК, ОБ, ОКБД с листом в книге? Чтобы руководитель мог изменить ценность мастики ОК или монтаж ОБ не влезая в макрос.
Замена текста на число и вывод суммы VBA, Необходимо выполнить замену текста по заданному принципу
 
Я уже прикинул вариант, работает, считает без ошибок. Смысл в том, что человек заполняет таблицу указывая "еднерками" выполненные пункты в каждой категории, а руководитель пересчитывает это все в рубли для предварительной оценки работы. Есть варианты по оптимизации? Как можно реализовать подгрузку соответствий из отдельного листа, на подобии таблицы соответствий, чтобы ценность позиций 9,10,11,12,13 ОМ, ОК, ОБ, ОКБД не в коде прописывать, а в таблице на листе, откуда макрос их заберет. Что добавить в макрос, для создания функции "=промежуточные.итоги(109;ХХ:УУ)" в 3 сроке 14 столбце и шапкой "Итого", охват функции должен быть все строки и столбцы с 9 по 13. Макрос состоит из 2 частей - 1 часть стырил на форуме. Он берет данные в исходной книге, к которой подключены таблицы исполнителей на отдельных листах, и объединяет в одну таблицу, благо кол-во столбцов фиксированное (в идеале), все это дело пихает в новую книгу. Вторую часть макроса придумал сегодня сам, она меняет в общей таблице в новой книге все 1 на кастомные значения.


Код
Sub sborka()
Dim y As Integer
Dim lLastRow As Integer
s_ = Sheets.Count
Workbooks.Add
ThisWorkbook.Sheets(1).Range("1:1").Copy ActiveWorkbook.Sheets(1).Range("a1")
For i = 1 To s_
    r_ = ActiveWorkbook.Sheets(1).Range("a" & Rows.Count).End(xlUp).Row + 1
    ThisWorkbook.Sheets(i).Range("a1").CurrentRegion.Offset(1).Copy ActiveWorkbook.Sheets(1).Range("a" & r_)
Next



lLastRow = Cells.SpecialCells(xlLastCell).Row

 For y = 2 To lLastRow
 If Cells(y, 7) = "ОМ" Then
    If Cells(y, 9) = 1 Then Cells(y, 9) = 50
    If Cells(y, 10) = 1 Then Cells(y, 10) = 50
    If Cells(y, 11) = 1 Then Cells(y, 11) = 50
    If Cells(y, 12) = 1 Then Cells(y, 12) = 50
    If Cells(y, 13) = 1 Then Cells(y, 13) = 50
 
 End If
  Next y

 For y = 2 To lLastRow
 If Cells(y, 7) = "ОК" Then
    If Cells(y, 9) = 1 Then Cells(y, 9) = 110
    If Cells(y, 10) = 1 Then Cells(y, 10) = 210
    If Cells(y, 11) = 1 Then Cells(y, 11) = 80
    If Cells(y, 12) = 1 Then Cells(y, 12) = 100
    If Cells(y, 13) = 1 Then Cells(y, 13) = 100
 
 End If
  Next y

 For y = 2 To lLastRow
 If Cells(y, 7) = "ОБ" Then
    If Cells(y, 9) = 1 Then Cells(y, 9) = 210
    If Cells(y, 10) = 1 Then Cells(y, 10) = 310
    If Cells(y, 11) = 1 Then Cells(y, 11) = 160
    If Cells(y, 12) = 1 Then Cells(y, 12) = 160
    If Cells(y, 13) = 1 Then Cells(y, 13) = 160
 
 End If
  Next y
  
  For y = 2 To lLastRow
 If Cells(y, 7) = "ОКБД" Then
    If Cells(y, 9) = 1 Then Cells(y, 9) = 170
    If Cells(y, 10) = 1 Then Cells(y, 10) = 210
    If Cells(y, 11) = 1 Then Cells(y, 11) = 90
    If Cells(y, 12) = 1 Then Cells(y, 12) = 120
    If Cells(y, 13) = 1 Then Cells(y, 13) = 110
 
 End If
  Next y

End Sub
Изменено: Flinkor - 18.10.2016 22:52:01
Замена текста на число и вывод суммы VBA, Необходимо выполнить замену текста по заданному принципу
 
Имеется таблица данных, число столбцов фиксированное, число строк растёт в зависимости от заполнения. 2 столбец содержит 4 различных значения - "красный", "жёлтый", "синий", "белый". 3,4,5 столбцы содержат в себе цифру 1 или пустые. Необходимо произвести замену в столбцах 3, 4, 5 по принципу - если в строке указано "красный" то 1 в 3 столбце будет 5, 1 в 4 столбце будет 10, 1 в 5 столбце будет 15, если указано "жёлтый", то замена 1 будет произведена на другие числа и т.п.
Прошу ногами не бить, в поиске не смог найти. Прошу помочь.
Изменено: Flinkor - 18.10.2016 13:10:48
Страницы: 1
Loading...