И так, здравствуйте! Суть проблемы: У нас есть книга, в книге n-нное количество листов, на каждом листе в столбце B может присутствовать ячейка со значением "Вакансия", в столбце С присутствует объем в числовом значении. Необходимо, чтобы при нажатии на макрос, он искал значение "вакансия" и суммировал значения на листе "Свод" в ячейке C28, к примеру.
В файле пример: У нас есть ячейка "Вакансия" на листе "Здание 1", в ячейке В2, в С2 есть значение "4". Так же у нас есть ячейка "Вакансия" на листе "Здание 2" в ячейке В4, в С4 есть значение "5". На лист "Свод" в ячейку С3 необходимо получить значение "9".
Помогите, пожалуйста, три дня ломаю голову.. скоро совсем не сломаю
И так, здравствуйте! Суть проблемы: У нас есть книга, в книге n-нное количество листов, на каждом листе в столбце B может присутствовать ячейка со значением "Вакансия", в столбце С присутствует объем в числовом значении. Необходимо, чтобы при нажатии на макрос, он искал значение "вакансия" и суммировал значения на листе "Свод" в ячейке C28, к примеру.
В файле пример: У нас есть ячейка "Вакансия" на листе "Здание 1", в ячейке В2, в С2 есть значение "4". Так же у нас есть ячейка "Вакансия" на листе "Здание 2" в ячейке В4, в С4 есть значение "5". На лист "Свод" в ячейку С3 необходимо получить значение "9".
Помогите, пожалуйста, три дня ломаю голову.. скоро совсем не сломаю unka
Без макроса могу предложить такой вариант. Хотя, вероятно, не самый лучший
Спасибо большое, конечно. Но, как Вы верно заметили, не самый лучший =) Это в примере всего 2 листа и пара-тройка строчек, в реале это 10 листочная книга и записей от 10 и выше.(
И как я понял, эта формула может найти тольку 1 строчку на 1 листе. Правильно?) То есть, если будет 2 ячейки "Вакансия" на листе, то посчитается только первая?
Цитата (alx74)
Без макроса могу предложить такой вариант. Хотя, вероятно, не самый лучший
Спасибо большое, конечно. Но, как Вы верно заметили, не самый лучший =) Это в примере всего 2 листа и пара-тройка строчек, в реале это 10 листочная книга и записей от 10 и выше.(
И как я понял, эта формула может найти тольку 1 строчку на 1 листе. Правильно?) То есть, если будет 2 ячейки "Вакансия" на листе, то посчитается только первая?unka
Сообщение отредактировал unka - Четверг, 28.02.2013, 10:12
Но и это ещё не всё!) В ячейке может быть написано не только "вакансия", а ещё набор букв. К примеру "Вакансия (фамилия)", и это тоже должно суммироваться, как воплотить ?)
Но и это ещё не всё!) В ячейке может быть написано не только "вакансия", а ещё набор букв. К примеру "Вакансия (фамилия)", и это тоже должно суммироваться, как воплотить ?)unka
Private Sub CommandButton1_Click() Dim sh As Object Dim vak As Variant, i As Integer vak = 0 For Each sh In ThisWorkbook.Worksheets If sh.Name <> "СВОД" Then For i = 1 To sh.Columns(1).SpecialCells(xlLastCell).Row If LCase(sh.Cells(i, 1).Value) Like ["*вакансия*"] Then vak = vak + sh.Cells(i, 3).Value End If Next Cells(28, 3).Value = vak End If Next End Sub
[/vba]
Для вашего последнего файла
[vba]
Код
Private Sub CommandButton1_Click() Dim sh As Object Dim vak As Variant, i As Integer vak = 0 For Each sh In ThisWorkbook.Worksheets If sh.Name <> "СВОД" Then For i = 1 To sh.Columns(1).SpecialCells(xlLastCell).Row If LCase(sh.Cells(i, 1).Value) Like ["*вакансия*"] Then vak = vak + sh.Cells(i, 3).Value End If Next Cells(28, 3).Value = vak End If Next End Sub
Sub ertert() Dim r As Range, adr$, wsh As Worksheet, i! On Error Resume Next: Err.Clear For Each wsh In ThisWorkbook.Worksheets If Not wsh Is ActiveSheet Then With wsh.UsedRange.Columns(1) Set r = .Find("вакансия") If Not r Is Nothing Then adr = r.Address Do i = i + r(1, 3) If Err Then Err.Clear: MsgBox "Проверьте ячейку " & _ r.Address & " на листе " & wsh.Name, 64 Set r = .FindNext(r) Loop While r.Address <> adr End If End With End If Next wsh Range("C28").Value = i End Sub
[/vba]
раз уж нарисовал. Как вариант
[vba]
Код
Sub ertert() Dim r As Range, adr$, wsh As Worksheet, i! On Error Resume Next: Err.Clear For Each wsh In ThisWorkbook.Worksheets If Not wsh Is ActiveSheet Then With wsh.UsedRange.Columns(1) Set r = .Find("вакансия") If Not r Is Nothing Then adr = r.Address Do i = i + r(1, 3) If Err Then Err.Clear: MsgBox "Проверьте ячейку " & _ r.Address & " на листе " & wsh.Name, 64 Set r = .FindNext(r) Loop While r.Address <> adr End If End With End If Next wsh Range("C28").Value = i End Sub