Страницы: 1
RSS
Заполнение данных сводной таблицы с использование VBA, Заполнение данных сводной таблицы из листа с вручную введенными данными использование поиска VBA
 
Есть таблица со сводными данными на листе DATA_REPORT
Просьба помочь с вопросом ее наполнения, сам не силен в VBA
Что нучжно:
1. Через поиск найти в столбце A листа DATA_REPORT значение указанное в ячейке V1 листа ADD_DATA_REPORT
2. Скопировать заполненые данные из ячеек листа ADD_DATA_REPORT в ячейки листа DATA_REPORT (например из ячейки AB1 листа ADD_DATA_REPORT в ячейку B#, где # номер строки ранее найденного значения (п.1)... одного значения хватит, на его примере все остальное впишу...)))
3. Если значение из п.1 не найдено выдать предупреждение что НЕ НАЙДЕНО ЗНАЧЕНИЕ
Спасибо))
Изменено: narod svs - 07.04.2020 18:48:38
 
narod svs, narod svs,
Цитата
narod svs написал:
Что нучжно
от вас:
1. Файл-пример в реальной структуре и формате данных. В нем показать исходные данне и рядом или на другом листе что должно получиться.

Если не грузиться попробуйте с другого браузера...имхо
Изменено: Mershik - 07.04.2020 16:10:46
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Mershik написал:
от вас:1. Файл-пример в реальной структуре и формате данных. В нем показать исходные данне и рядом или на другом листе что должно получиться.Если не грузиться попробуйте с другого браузера...имхо
Прикрепил
 
При активном листе ADD_DATA_REPORT
Код
Sub ReportNomer()
Dim FoundCell As Range
  With Worksheets("DATA_REPORT")
    Set FoundCell = .Columns(1).Find(Range("V1"), , xlValues, xlWhole)
     If Not FoundCell Is Nothing Then
       .Cells(FoundCell.Row, "B") = Range("AB1")
       Cells(26, "B") = .Cells(FoundCell.Row, "C")
     Else
       MsgBox "НЕ НАЙДЕНО ЗНАЧЕНИЕ"
     End If
  End With
End Sub
 
Цитата
Kuzmich написал:
При активном листе ADD_DATA_REPORT
Спасибо большое! То что надо!
Помогите еще немножко))
Добавьте еще копирование
из C4 в E#
из Q4 в W#
а то немного не пойму как правильно...
 
Цитата
а то немного не пойму как правильно...
А чем это отличается от
Цитата
например из ячейки AB1 листа ADD_DATA_REPORT в ячейку B#, где # номер строки ранее найденного значения
 
Цитата
Kuzmich написал:
Cells(FoundCell.Row, "C")
вот это за что отвечает?
 
На листе DATA_REPORT ячейка C#, только вы точку забыли
Код
.Cells(FoundCell.Row, "C")
 
Цитата
Kuzmich написал:
1.Cells(FoundCell.Row, "C")
Код
Sub Add()
Dim FoundCell As Range
  With Worksheets("DATA_REPORT")
    Set FoundCell = .Columns(1).Find(Range("V1"), , xlValues, xlWhole)
     If Not FoundCell Is Nothing Then
       .Cells(FoundCell.Row, "B") = Range("AB1")
       Cells(26, "B") = .Cells(FoundCell.Row, "C")
       .Cells(FoundCell.Row, "E") = Range("C4")
       Cells(26, "E") = .Cells(FoundCell.Row, "C")
       .Cells(FoundCell.Row, "W") = Range("Q4")
       Cells(26, "W") = .Cells(FoundCell.Row, "C")
       .Cells(FoundCell.Row, "AG") = Range("Q4")
       Cells(26, "AG") = .Cells(FoundCell.Row, "C")
     Else
       MsgBox "текст"
     End If
  End With
End Sub
все правильно делаю?
 
Код
Cells(26, "B") = .Cells(FoundCell.Row, "C")
Cells(26, "E") = .Cells(FoundCell.Row, "C")
Cells(26, "W") = .Cells(FoundCell.Row, "C")
Cells(26, "AG") = .Cells(FoundCell.Row, "C")

Почему из одной ячейки в четыре разные?
 
Цитата
Kuzmich написал:
Почему из одной ячейки в четыре разные?
У меня и вот так в принципе все работает... все что надо копируется...
а что тогда делает Cells(26, "B") = .Cells(FoundCell.Row, "C")?
Код
Sub Add()
Dim FoundCell As Range
  With Worksheets("DATA_REPORT")
    Set FoundCell = .Columns(1).Find(Range("V1"), , xlValues, xlWhole)
     If Not FoundCell Is Nothing Then
       .Cells(FoundCell.Row, "B") = Range("AB1")
       .Cells(FoundCell.Row, "E") = Range("C4")
       .Cells(FoundCell.Row, "W") = Range("Q4")
       .Cells(FoundCell.Row, "AG") = Range("Q4")
     Else
       MsgBox "НЕ НАЙДЕНО ЗНАЧЕНИЕ"
     End If
  End With
End Sub
Изменено: narod svs - 07.04.2020 22:37:43
 
Код
Sub Add()
Dim FoundCell As Range
  With Worksheets("DATA_REPORT")
    Set FoundCell = .Columns(1).Find(Range("V1"), , xlValues, xlWhole)
     If Not FoundCell Is Nothing Then
        .Cells(FoundCell.Row, "B") = Range("AB1")
        .Cells(FoundCell.Row, "E") = Range("C4")
        .Cells(FoundCell.Row, "F") = Range("D18")
        .Cells(FoundCell.Row, "G") = Range("C6")
        .Cells(FoundCell.Row, "H") = Range("C15")
        .Cells(FoundCell.Row, "I") = Range("C7")
        .Cells(FoundCell.Row, "J") = Range("C9")
        .Cells(FoundCell.Row, "K") = Range("C11")
        .Cells(FoundCell.Row, "L") = Range("C13")
        .Cells(FoundCell.Row, "M") = Range("K4")
        .Cells(FoundCell.Row, "N") = Range("K6")
        .Cells(FoundCell.Row, "O") = Range("N8")
        .Cells(FoundCell.Row, "P") = Range("N10")
        .Cells(FoundCell.Row, "Q") = Range("E6")
        .Cells(FoundCell.Row, "R") = Range("E15")
        .Cells(FoundCell.Row, "S") = Range("E7")
        .Cells(FoundCell.Row, "T") = Range("E9")
        .Cells(FoundCell.Row, "U") = Range("E11")
        .Cells(FoundCell.Row, "V") = Range("E13")
        .Cells(FoundCell.Row, "W") = Range("Q4")
        .Cells(FoundCell.Row, "X") = Range("Q6")
        .Cells(FoundCell.Row, "Y") = Range("T8")
        .Cells(FoundCell.Row, "Z") = Range("T10")
        .Cells(FoundCell.Row, "AA") = Range("G6")
        .Cells(FoundCell.Row, "AB") = Range("G15")
        .Cells(FoundCell.Row, "AC") = Range("G7")
        .Cells(FoundCell.Row, "AD") = Range("G9")
        .Cells(FoundCell.Row, "AE") = Range("G11")
        .Cells(FoundCell.Row, "AF") = Range("G13")
        .Cells(FoundCell.Row, "AG") = Range("W4")
        .Cells(FoundCell.Row, "AH") = Range("W6")
        .Cells(FoundCell.Row, "AI") = Range("Z8")
        .Cells(FoundCell.Row, "AJ") = Range("Z10")
        .Cells(FoundCell.Row, "AK") = Range("I6")
        .Cells(FoundCell.Row, "AL") = Range("I15")
        .Cells(FoundCell.Row, "AM") = Range("I7")
        .Cells(FoundCell.Row, "AN") = Range("I9")
        .Cells(FoundCell.Row, "AO") = Range("I11")
        .Cells(FoundCell.Row, "AP") = Range("I13")
        .Cells(FoundCell.Row, "AQ") = Range("V48")
        .Cells(FoundCell.Row, "AS") = Range("Z65")
        .Cells(FoundCell.Row, "AT") = Range("Q62")
        .Cells(FoundCell.Row, "AU") = Range("B26")
        .Cells(FoundCell.Row, "AV") = Range("L26")
        .Cells(FoundCell.Row, "AW") = Range("P26")
        .Cells(FoundCell.Row, "AX") = Range("T26")
        .Cells(FoundCell.Row, "AZ") = Range("B27")
        .Cells(FoundCell.Row, "BA") = Range("L27")
        .Cells(FoundCell.Row, "BB") = Range("P27")
        .Cells(FoundCell.Row, "BC") = Range("T27")
        .Cells(FoundCell.Row, "BE") = Range("B28")
        .Cells(FoundCell.Row, "BF") = Range("L28")
        .Cells(FoundCell.Row, "BG") = Range("P28")
        .Cells(FoundCell.Row, "BH") = Range("T28")
        .Cells(FoundCell.Row, "BJ") = Range("B29")
        .Cells(FoundCell.Row, "BK") = Range("L29")
        .Cells(FoundCell.Row, "BL") = Range("P29")
        .Cells(FoundCell.Row, "BM") = Range("T29")
        .Cells(FoundCell.Row, "BO") = Range("B30")
        .Cells(FoundCell.Row, "BP") = Range("L30")
        .Cells(FoundCell.Row, "BQ") = Range("P30")
        .Cells(FoundCell.Row, "BR") = Range("T30")
        .Cells(FoundCell.Row, "BT") = Range("B31")
        .Cells(FoundCell.Row, "BU") = Range("L31")
        .Cells(FoundCell.Row, "BV") = Range("P31")
        .Cells(FoundCell.Row, "BW") = Range("T31")
        .Cells(FoundCell.Row, "BY") = Range("B32")
        .Cells(FoundCell.Row, "BZ") = Range("L32")
        .Cells(FoundCell.Row, "CA") = Range("P32")
        .Cells(FoundCell.Row, "CB") = Range("T32")
        .Cells(FoundCell.Row, "CD") = Range("B33")
        .Cells(FoundCell.Row, "CE") = Range("L33")
        .Cells(FoundCell.Row, "CF") = Range("P33")
        .Cells(FoundCell.Row, "CG") = Range("T33")
        .Cells(FoundCell.Row, "CI") = Range("B34")
        .Cells(FoundCell.Row, "CJ") = Range("L34")
        .Cells(FoundCell.Row, "CK") = Range("P34")
        .Cells(FoundCell.Row, "CL") = Range("T34")
        .Cells(FoundCell.Row, "CN") = Range("B35")
        .Cells(FoundCell.Row, "CO") = Range("L35")
        .Cells(FoundCell.Row, "CP") = Range("P35")
        .Cells(FoundCell.Row, "CQ") = Range("T35")
        .Cells(FoundCell.Row, "CZ") = Range("C68")
     Else
       MsgBox "Отчет с таким номером не найден!"
     End If
  End With
End Sub

Получился вот такой код.
Просьба добавить пару функций:
1. При копировании если в какой-то исходной ячейке (ячейках) нет данных, то ничего из нее не копировалось, а все остальное копировалось..
2. При копировании если в любой конечной ячейки есть данные выдавалось предупреждение "Данные уже внесены. Обновить?" и, соответственно, ДА или НЕТ

Изменено: narod svs - 08.04.2020 10:10:33
Страницы: 1
Наверх