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

Вход

Регистрация

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

 

= Мир MS Excel/CountIfs с несколькими условиями - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » CountIfs с несколькими условиями (Макросы/Sub)
CountIfs с несколькими условиями
Паштет Дата: Понедельник, 21.01.2019, 10:51 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Добрый день!
Для подсчета данных из таблицы о количестве строк со значением "40" использую следующий код:
[vba]
Код
.List(j, 3) = Application.WorksheetFunction.CountIfs(myRange, .List(j, 0), myRange2, kvartal, myRange4, "40")
[/vba]
Но появилась необходимость, считать совместно "40" и "60", хотел реализовать следующим образом:
[vba]
Код
.List(j, 3) = Application.WorksheetFunction.CountIfs(myRange, .List(j, 0), myRange2, kvartal, myRange4, "40" or "60")
[/vba]
но не работает. Как лучше это реализовать?
 
Ответить
СообщениеДобрый день!
Для подсчета данных из таблицы о количестве строк со значением "40" использую следующий код:
[vba]
Код
.List(j, 3) = Application.WorksheetFunction.CountIfs(myRange, .List(j, 0), myRange2, kvartal, myRange4, "40")
[/vba]
Но появилась необходимость, считать совместно "40" и "60", хотел реализовать следующим образом:
[vba]
Код
.List(j, 3) = Application.WorksheetFunction.CountIfs(myRange, .List(j, 0), myRange2, kvartal, myRange4, "40" or "60")
[/vba]
но не работает. Как лучше это реализовать?

Автор - Паштет
Дата добавления - 21.01.2019 в 10:51
boa Дата: Понедельник, 21.01.2019, 12:54 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 307
Репутация: 70 ±
Замечаний: 0% ±

2013, 365
Паштет,
[vba]
Код
.List(j, 3) = Application.WorksheetFunction.CountIfs(myRange, .List(j, 0), myRange2, kvartal, myRange4, "40") + _
              Application.WorksheetFunction.CountIfs(myRange, .List(j, 0), myRange2, kvartal, myRange4, "60")
[/vba]


 
Ответить
СообщениеПаштет,
[vba]
Код
.List(j, 3) = Application.WorksheetFunction.CountIfs(myRange, .List(j, 0), myRange2, kvartal, myRange4, "40") + _
              Application.WorksheetFunction.CountIfs(myRange, .List(j, 0), myRange2, kvartal, myRange4, "60")
[/vba]

Автор - boa
Дата добавления - 21.01.2019 в 12:54
sboy Дата: Понедельник, 21.01.2019, 12:55 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 670 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
Без файла-примера могу только подсказать.
Оба условия надо просуммировать, или двумя Countifs или суммировать один с массивом условий.
 
Ответить
СообщениеДобрый день.
Без файла-примера могу только подсказать.
Оба условия надо просуммировать, или двумя Countifs или суммировать один с массивом условий.

Автор - sboy
Дата добавления - 21.01.2019 в 12:55
Паштет Дата: Понедельник, 21.01.2019, 16:27 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Значений оказалось немного больше, чем ожидал, но начало у всех одно "40/60", "40/0" и т.д. Но мне важны первые две цифры. Пошел казалось бы по простому пути, но оказался он не рабочим. Я при создании своей переменной попытался оставить только первые два символа с помощью Left, но что-то пошло не так:
[vba]
Код
Dim myRange, myRange2, myRange4 As Range, myCell As Range, myCollection As New Collection, _
myElement As Variant, i As Long

Set myRange4 = Left(Sheets("Статистика").Range(Sheets("Статистика").Cells(2, 21), Sheets("Статистика").Cells(Sheets("Статистика").Cells(Rows.Count, 21).End(xlUp).Row, 21)), 2)

.List(j, 3) = Application.WorksheetFunction.CountIfs(myRange, .List(j, 0), myRange2, kvartal, myRange4, "40") + _
            Application.WorksheetFunction.CountIfs(myRange, .List(j, 0), myRange2, kvartal, myRange4, "60")
[/vba]Как быть?
 
Ответить
СообщениеЗначений оказалось немного больше, чем ожидал, но начало у всех одно "40/60", "40/0" и т.д. Но мне важны первые две цифры. Пошел казалось бы по простому пути, но оказался он не рабочим. Я при создании своей переменной попытался оставить только первые два символа с помощью Left, но что-то пошло не так:
[vba]
Код
Dim myRange, myRange2, myRange4 As Range, myCell As Range, myCollection As New Collection, _
myElement As Variant, i As Long

Set myRange4 = Left(Sheets("Статистика").Range(Sheets("Статистика").Cells(2, 21), Sheets("Статистика").Cells(Sheets("Статистика").Cells(Rows.Count, 21).End(xlUp).Row, 21)), 2)

.List(j, 3) = Application.WorksheetFunction.CountIfs(myRange, .List(j, 0), myRange2, kvartal, myRange4, "40") + _
            Application.WorksheetFunction.CountIfs(myRange, .List(j, 0), myRange2, kvartal, myRange4, "60")
[/vba]Как быть?

Автор - Паштет
Дата добавления - 21.01.2019 в 16:27
boa Дата: Понедельник, 21.01.2019, 17:20 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 307
Репутация: 70 ±
Замечаний: 0% ±

2013, 365
Паштет,
Как быть?

пример приложить, что бы можно было на чем-то "экспериментировать"
а так по формуле скажу, что вы пытаетесь отрезать от Range чего-то 2 слева..., и это не символы :)


 
Ответить
СообщениеПаштет,
Как быть?

пример приложить, что бы можно было на чем-то "экспериментировать"
а так по формуле скажу, что вы пытаетесь отрезать от Range чего-то 2 слева..., и это не символы :)

Автор - boa
Дата добавления - 21.01.2019 в 17:20
Паштет Дата: Четверг, 24.01.2019, 09:52 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Файлик прилагаю. По факту надо от значений range взять только два символа слева
К сообщению приложен файл: 1134469_2.xlsm(70.2 Kb)
 
Ответить
СообщениеФайлик прилагаю. По факту надо от значений range взять только два символа слева

Автор - Паштет
Дата добавления - 24.01.2019 в 09:52
_Boroda_ Дата: Четверг, 24.01.2019, 10:17 | Сообщение № 7
Группа: Модераторы
Ранг: Местный житель
Сообщений: 14089
Репутация: 5686 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Ничего не понятно в файле. Откуда что куда тянуть - Вы бы пояснили хоть.
По поводу 40 слева
[vba]
Код
Application.WorksheetFunction.CountIfs(myRange, .List(j, 0), myRange2, kvartal, myRange4, "40*")
[/vba]Но это только если там у Вас нет числовых 40, только с текстовыми 40. По идее Вы можете использовать две СЧЁТЕСЛИ
Или
Код
СУММПРОИЗВ((фф=х1)*(ыы=х2)*(ЛЕВСИМВ(вв;2)="40"))


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеНичего не понятно в файле. Откуда что куда тянуть - Вы бы пояснили хоть.
По поводу 40 слева
[vba]
Код
Application.WorksheetFunction.CountIfs(myRange, .List(j, 0), myRange2, kvartal, myRange4, "40*")
[/vba]Но это только если там у Вас нет числовых 40, только с текстовыми 40. По идее Вы можете использовать две СЧЁТЕСЛИ
Или
Код
СУММПРОИЗВ((фф=х1)*(ыы=х2)*(ЛЕВСИМВ(вв;2)="40"))

Автор - _Boroda_
Дата добавления - 24.01.2019 в 10:17
Паштет Дата: Четверг, 24.01.2019, 10:55 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Тянуть из столбца U листа "Статистика", он же Range4.
Первый хороший способ и легко мог его реализовать через форму заполнения, как и предполагается, но также хочется оставить вариант ручного заполнения напрямую в таблицу, а по умолчанию он "40" ставить общим форматом и считает числом.
Он формул в ячейке вообще хочу отказаться, тк при жестком редактирования листа "статистика" падают формулы в отчете, адреса ячеек превращаются в "ССЫЛКА". Я уже задумываюсь, как их на макросы заменить.
 
Ответить
СообщениеТянуть из столбца U листа "Статистика", он же Range4.
Первый хороший способ и легко мог его реализовать через форму заполнения, как и предполагается, но также хочется оставить вариант ручного заполнения напрямую в таблицу, а по умолчанию он "40" ставить общим форматом и считает числом.
Он формул в ячейке вообще хочу отказаться, тк при жестком редактирования листа "статистика" падают формулы в отчете, адреса ячеек превращаются в "ССЫЛКА". Я уже задумываюсь, как их на макросы заменить.

Автор - Паштет
Дата добавления - 24.01.2019 в 10:55
_Boroda_ Дата: Четверг, 24.01.2019, 11:03 | Сообщение № 9
Группа: Модераторы
Ранг: Местный житель
Сообщений: 14089
Репутация: 5686 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Я Вам формулу для того и написал, чтобы Вы ее в макрос засунули


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

Автор - _Boroda_
Дата добавления - 24.01.2019 в 11:03
Мир MS Excel » Вопросы и решения » Вопросы по VBA » CountIfs с несколькими условиями (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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