Страница 1 из 2

Не большая экскурсия по макросам в Excel

Добавлено: 16 мар 2009, 11:14
kuznetsovSergey
есть несколько элементарных вопросов. Которые надеюсь не заставят потратить много времени. Нужен макрос в Excel что бы делал следующее.

1) Есть 2 страницы в Excel. На 2-ой страницы размещены данные. На первой только кнопка. При нажатии кнопки должна происходить выборка по столбцам. Как это сделать понятия не имею.
К примеру: на второй странице есть столбец Фамилия(я знаю его порядковый номер столбца, предположил столбец A): и при нажатии на кнопку на первой странице , в ячейку B4 на первой странице , должны вывестись количество всех Кузнецовых.

2) Есть на второй странице столбец дата_рождения, и есть на первой странице ячейка B3 с любой датой. и при нажатии той же кнопки, в ячейку на первой странице в B5 должно вывестись кол-во Кузнецовых, младше указанной даты.

3) При нажатии той же кнопки, должно в ячейку B6 вычесть из ячейки В4-B5, и данные записать в ячейку.

4) В ячейку N4 на первой странице, должен записать количество фамилий, который заканчиваются на "ОВА".

5) В ячейку С4, должно записаться кол-во людей с фамилией "Кузнецов" и именем "Сергей", с учетом что на второй старнице этого файла, есть столбей H, в котором список имен.

Огромное спасибо за ранее

Re: Не большая экскурсия по макросам в Excel

Добавлено: 16 мар 2009, 12:14
AlexZZZ
Самое простое, это использовать автофильтр. Тогда и макрос не потребуется. Но если нужно обязательно с макросом, тогда примерно так:

Код: Выделить всё

Sheets("Лист2").Range("A1:С100").AutoFilter Field:=1, Criteria1:="Кузнецов"
Sheets("Лист1").Range("A1:С100").AutoFilter Field:=3, Criteria1:=">01.01.1979", Operator:=xlAnd
Укажите только правильное название нужного листа, диапазона автофильтра, номера его поля (AutoFilter Field) и критерия выборки.

Re: Не большая экскурсия по макросам в Excel

Добавлено: 16 мар 2009, 12:17
kuznetsovSergey
AlexZZZ писал(а):Самое простое, это использовать автофильтр. Тогда и макрос не потребуется. Но если нужно обязательно с макросом, тогда примерно так:

Код: Выделить всё

Sheets("Лист2").Range("A1:С100").AutoFilter Field:=1, Criteria1:="Кузнецов"

Укажите только правильное название нужного листа, диапазона автофильтра, номера его поля (AutoFilter Field) и критерия выборки.

макрос обязателен, потому что один и тот же макрос должен много довольно делать... Фильтром тут не выкрутиться

Re: Не большая экскурсия по макросам в Excel

Добавлено: 16 мар 2009, 12:21
kuznetsovSergey
AlexZZZ писал(а):

Код: Выделить всё

Sheets("Лист2").Range("A1:С100").AutoFilter Field:=1, Criteria1:="Кузнецов"

вот ещё бы было бы здорово, понять как определить ячейку, куда вносить полученные данные выборки. Мне кажется этот код не считает количество. он просто выводит всех кузнецовых

Re: Не большая экскурсия по макросам в Excel

Добавлено: 16 мар 2009, 12:27
kuznetsovSergey
AlexZZZ писал(а):Самое простое, это использовать автофильтр. Тогда и макрос не потребуется. Но если нужно обязательно с макросом, тогда примерно так:

Код: Выделить всё

Sheets("Лист2").Range("A1:С100").AutoFilter Field:=1, Criteria1:="Кузнецов"
Sheets("Лист1").Range("A1:С100").AutoFilter Field:=3, Criteria1:=">01.01.1979", Operator:=xlAnd

Укажите только правильное название нужного листа, диапазона автофильтра, номера его поля (AutoFilter Field) и критерия выборки.
а что за оператор Operator:=xlAnd ?

Re: Не большая экскурсия по макросам в Excel

Добавлено: 16 мар 2009, 12:30
kuznetsovSergey
AlexZZZ писал(а):Самое простое, это использовать автофильтр. Тогда и макрос не потребуется. Но если нужно обязательно с макросом, тогда примерно так:

Код: Выделить всё

Sheets("Лист2").Range("A1:С100").AutoFilter Field:=1, Criteria1:="Кузнецов"
Sheets("Лист1").Range("A1:С100").AutoFilter Field:=3, Criteria1:=">01.01.1979", Operator:=xlAnd

Укажите только правильное название нужного листа, диапазона автофильтра, номера его поля (AutoFilter Field) и критерия выборки.
кстати нужна проверка даты рождения. не с датой в текст программы. А с датой. которую я могу меня в указанной ячейке

Re: Не большая экскурсия по макросам в Excel

Добавлено: 16 мар 2009, 12:58
AlexZZZ

Код: Выделить всё

Sub ПодсчётИскомойФамилии()
    Dim f As String
    Dim n As Long
    Dim r As Long
    f = InputBox("Введите искомую фамилию")
    n = 0
    For r = 1 To 100 ' 1-начальная строка поиска, 100 - конечная
        If Sheets("Лист1").Cells(r, 1).Value = f Then n = n + 1  ' 1 - это номер столбца для поиска
    Next r
    MsgBox "Количество фамилий «" & f & "» - " & n
End Sub

Код: Выделить всё

Sub ПодсчётОкончанияФамилий()
    Dim f As String
    Dim n As Long
    Dim r As Long
    f = InputBox("Введите искомое окончание фамилии")
    n = 0
    For r = 1 To 100 ' 1-начальная строка поиска, 100 - конечная
        If Right(Sheets("Лист1").Cells(r, 1).Value, Len(f)) = f Then n = n + 1 ' 1 - это номер столбца для поиска
    Next r
    MsgBox "Количество фамилий с окончанием «" & f & "» - " & n
End Sub

Код: Выделить всё

Sub ПодсчётДат()
    Dim nDR As Long
    Dim kDR As Long
    Dim n As Long
    Dim r As Long
    nDR = Application.InputBox("Введите начальную дату для подсчёта", Type:=1)
    kDR = Application.InputBox("Введите конечную дату для подсчёта", Type:=1)
    n = 0
    For r = 1 To 100 ' 1-начальная строка поиска, 100 - конечная
        If Sheets("Лист1").Cells(r, 3).Value >= nDR And Sheets("Лист1").Cells(r, 3).Value <= kDR Then n = n + 1 ' 3 - это номер столбца для поиска
    Next r
    MsgBox "Количество найденных дат в искомом промежутке с " & Format(nDR, "dd mmmm yyyy") & "г. по " & Format(kDR, "dd mmmm yyyy") & "г. - " & n
End Sub

Re: Не большая экскурсия по макросам в Excel

Добавлено: 16 мар 2009, 13:00
kuznetsovSergey
AlexZZZ писал(а):

Код: Выделить всё

Sub ПодсчётИскомойФамилии()
    Dim f As String
    Dim n As Long
    Dim r As Long
    f = InputBox("Введите искомую фамилию")
    n = 0
    For r = 1 To 100 ' 1-начальная строка поиска, 100 - конечная
        If Sheets("Лист1").Cells(r, 1).Value = f Then n = n + 1  ' 1 - это номер столбца для поиска
    Next r
    MsgBox "Количество фамилий «" & f & "» - " & n
End Sub
это будет окно выскакивать? а просто что бы при нажатии кнопочки, нельзы что бы подсчет сам шел, а мне только в нужную ячейку данные только пришли?

Re: Не большая экскурсия по макросам в Excel

Добавлено: 16 мар 2009, 13:08
AlexZZZ
Тогда, так:

Код: Выделить всё

Sub ПодсчётИскомойФамилии()
    Dim f As String
    Dim n As Long
    Dim r As Long
    f = "Кузнецов"
    n = 0
    For r = 1 To 100 ' 1-начальная строка поиска, 100 - конечная
        If Sheets("Лист1").Cells(r, 3).Value = f Then n = n + 1 ' 3 - это номер столбца для поиска
    Next r
    Sheets("Лист2").Cells(1, 1).Value = n ' укажите нужное имя листа, номер строки и столбца ячейки (Cells), куда нужно записать подсчитанные данные
End Sub

Re: Не большая экскурсия по макросам в Excel

Добавлено: 16 мар 2009, 14:11
kuznetsovSergey
AlexZZZ писал(а):Тогда, так:

Код: Выделить всё

Sub ПодсчётИскомойФамилии()
    Dim f As String
    Dim n As Long
    Dim r As Long
    f = "Кузнецов"
    n = 0
    For r = 1 To 100 ' 1-начальная строка поиска, 100 - конечная
        If Sheets("Лист1").Cells(r, 3).Value = f Then n = n + 1 ' 3 - это номер столбца для поиска
    Next r
    Sheets("Лист2").Cells(1, 1).Value = n ' укажите нужное имя листа, номер строки и столбца ячейки (Cells), куда нужно записать подсчитанные данные
End Sub

уау !!! это то что нужно !!! вообще супер !!
вот осталось узнать, как считать количество фамилий, заканчивающихся на "ОВА"