Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Подсчет колличества строк при совпадении нескольких ячеек - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Подсчет колличества строк при совпадении нескольких ячеек (Макросы/Sub)
Подсчет колличества строк при совпадении нескольких ячеек
Sashagor1982 Дата: Суббота, 16.08.2014, 16:10 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 0% ±

Excel 2007
Здравствуйте уважаемые форумчане. Необходим макрос подсчета строк в которых выполнено условие совпадения в нескольких столбцах, эквивалент функции СЧЕТЕСЛИМН. Данный макрос считает количество совпадений "Маша" в первом столбце:
[vba]
Код
Sub Подсчет()
i = Application.WorksheetFunction.CountIf(Sheets("Лист1").Columns(1), "Маша")
Sheets("Лист2").Cells(10, 1) = i
End Sub
[/vba]
Как подсчитать количество строк в которых "Маша" в первом столбце, "июнь" во втором, "1" в третьем?
Заранее спасибо.
К сообщению приложен файл: 2166541.xls (28.5 Kb)


Сообщение отредактировал Sashagor1982 - Суббота, 16.08.2014, 21:37
 
Ответить
СообщениеЗдравствуйте уважаемые форумчане. Необходим макрос подсчета строк в которых выполнено условие совпадения в нескольких столбцах, эквивалент функции СЧЕТЕСЛИМН. Данный макрос считает количество совпадений "Маша" в первом столбце:
[vba]
Код
Sub Подсчет()
i = Application.WorksheetFunction.CountIf(Sheets("Лист1").Columns(1), "Маша")
Sheets("Лист2").Cells(10, 1) = i
End Sub
[/vba]
Как подсчитать количество строк в которых "Маша" в первом столбце, "июнь" во втором, "1" в третьем?
Заранее спасибо.

Автор - Sashagor1982
Дата добавления - 16.08.2014 в 16:10
_Boroda_ Дата: Суббота, 16.08.2014, 16:28 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Один из простейших способов - без массивов, коллекций и т.п. (чтобы Вас не грузить лишний раз и не путать)
[vba]
Код
Sub tt()
      x1_ = "Маша"
      x2_ = "июнь"
      x3_ = 1
      r_ = Range("A" & Rows.Count).End(xlUp).Row 'Ищем последнюю заполненную строку в столбце А
      'Или просто
      'r_=30
      For i = 1 To r_
          If Range("A" & i) = x1_ Then
              If Range("B" & i) = x2_ Then
                  If Range("C" & i) = x3_ Then
                      n_ = n_ + 1
                  End If
              End If
          End If
      Next i
      Sheets("Лист2").Cells(10, 1) = n_
End Sub
[/vba]
Функцией (если не нравится СУММЕСЛИМН) можно так
Код
=СУММПРОИЗВ((A1:A30="Маша")*(B1:B30="июнь")*(C1:C30=1))


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеОдин из простейших способов - без массивов, коллекций и т.п. (чтобы Вас не грузить лишний раз и не путать)
[vba]
Код
Sub tt()
      x1_ = "Маша"
      x2_ = "июнь"
      x3_ = 1
      r_ = Range("A" & Rows.Count).End(xlUp).Row 'Ищем последнюю заполненную строку в столбце А
      'Или просто
      'r_=30
      For i = 1 To r_
          If Range("A" & i) = x1_ Then
              If Range("B" & i) = x2_ Then
                  If Range("C" & i) = x3_ Then
                      n_ = n_ + 1
                  End If
              End If
          End If
      Next i
      Sheets("Лист2").Cells(10, 1) = n_
End Sub
[/vba]
Функцией (если не нравится СУММЕСЛИМН) можно так
Код
=СУММПРОИЗВ((A1:A30="Маша")*(B1:B30="июнь")*(C1:C30=1))

Автор - _Boroda_
Дата добавления - 16.08.2014 в 16:28
Sashagor1982 Дата: Суббота, 16.08.2014, 20:37 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 0% ±

Excel 2007
Спасибо, но хотелось бы без использования циклов.
 
Ответить
СообщениеСпасибо, но хотелось бы без использования циклов.

Автор - Sashagor1982
Дата добавления - 16.08.2014 в 20:37
Sashagor1982 Дата: Суббота, 16.08.2014, 20:39 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 0% ±

Excel 2007
Как-нибудь через подобное Application.WorksheetFunction.CountIf можно?
 
Ответить
СообщениеКак-нибудь через подобное Application.WorksheetFunction.CountIf можно?

Автор - Sashagor1982
Дата добавления - 16.08.2014 в 20:39
_Boroda_ Дата: Суббота, 16.08.2014, 20:51 | Сообщение № 5
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
но хотелось бы без использования циклов.

через подобное Application.WorksheetFunction.CountIf можно?

А Вам не кажется, что об этом было бы неплохо написать в первом сообщении, а? Это так, на будущее - вдруг еще вопросы появятся.
Ну, раз Вам хочется так, держите
[vba]
Код
Sub tt()
       Sheets("Лист2").Cells(10, 1).FormulaR1C1 = "=SUMPRODUCT((Лист1!C=""Маша"")*(Лист1!C[1]=""июнь"")*(Лист1!C[2]=1))"
       Sheets("Лист2").Cells(10, 1) = Sheets("Лист2").Cells(10, 1).Value
End Sub
[/vba]
Кстати, а чем Вам так циклы не угодили?


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
но хотелось бы без использования циклов.

через подобное Application.WorksheetFunction.CountIf можно?

А Вам не кажется, что об этом было бы неплохо написать в первом сообщении, а? Это так, на будущее - вдруг еще вопросы появятся.
Ну, раз Вам хочется так, держите
[vba]
Код
Sub tt()
       Sheets("Лист2").Cells(10, 1).FormulaR1C1 = "=SUMPRODUCT((Лист1!C=""Маша"")*(Лист1!C[1]=""июнь"")*(Лист1!C[2]=1))"
       Sheets("Лист2").Cells(10, 1) = Sheets("Лист2").Cells(10, 1).Value
End Sub
[/vba]
Кстати, а чем Вам так циклы не угодили?

Автор - _Boroda_
Дата добавления - 16.08.2014 в 20:51
Sashagor1982 Дата: Суббота, 16.08.2014, 21:27 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 0% ±

Excel 2007
Спасибо, но может через Application.WorksheetFunction есть какое либо решение, целый день ищу не мог найти. :(
 
Ответить
СообщениеСпасибо, но может через Application.WorksheetFunction есть какое либо решение, целый день ищу не мог найти. :(

Автор - Sashagor1982
Дата добавления - 16.08.2014 в 21:27
Sashagor1982 Дата: Суббота, 16.08.2014, 21:29 | Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 0% ±

Excel 2007
Кстати, а чем Вам так циклы не угодили?


Здесь просто пример, реальная очень большая программа, где более 5000 строк.
 
Ответить
Сообщение
Кстати, а чем Вам так циклы не угодили?


Здесь просто пример, реальная очень большая программа, где более 5000 строк.

Автор - Sashagor1982
Дата добавления - 16.08.2014 в 21:29
_Boroda_ Дата: Суббота, 16.08.2014, 21:42 | Сообщение № 8
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Держите через свой любимый WorksheetFunction, уж коли он Вам так дорог.
[vba]
Код
n = Application.WorksheetFunction.CountIfs(Range("A1:A30"), "Маша", Range("B1:B30"), "июнь", Range("C1:C30"), 1)
[/vba]
Листы и диапазоны там самостоятельно поставьте


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеДержите через свой любимый WorksheetFunction, уж коли он Вам так дорог.
[vba]
Код
n = Application.WorksheetFunction.CountIfs(Range("A1:A30"), "Маша", Range("B1:B30"), "июнь", Range("C1:C30"), 1)
[/vba]
Листы и диапазоны там самостоятельно поставьте

Автор - _Boroda_
Дата добавления - 16.08.2014 в 21:42
Sashagor1982 Дата: Суббота, 16.08.2014, 22:05 | Сообщение № 9
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 0% ±

Excel 2007
То что надо, Спасибо hands


Сообщение отредактировал Sashagor1982 - Суббота, 16.08.2014, 22:21
 
Ответить
СообщениеТо что надо, Спасибо hands

Автор - Sashagor1982
Дата добавления - 16.08.2014 в 22:05
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Подсчет колличества строк при совпадении нескольких ячеек (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!