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

Вход

Регистрация

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

 

= Мир MS Excel/Формула СЧЁТЕСЛИМН для 500000 строк (макрос) - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Формула СЧЁТЕСЛИМН для 500000 строк (макрос) (Макросы/Sub)
Формула СЧЁТЕСЛИМН для 500000 строк (макрос)
nikonka_muss Дата: Пятница, 30.04.2021, 21:37 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Добрый вечер.
Прошу помочь с макросами. Изначально составила формулы, по которым планировала делать расчеты. Но в файле будет 500000 строк, в итоге целый день шли расчеты, формулы пересчитывались, но так и не пересчитались.
Попробовала написать макрос макрорекордером, но быстрее работать не стало. Ниже макрос, пример тоже во вложении.
Помогите допилить его , пжлст, чтобы работало быстрее
Ну хоть два часа чтобы считалось, а не 8 ))

[vba]
Код
Sub Расшир()
    ActiveCell.FormulaR1C1 = _
        "=IF(AND(RC[-3]=""проверить фейс"",OR(COUNTIFS(C2,RC2,C4,RC4,C17,"">=""&RC17,C3,RC3,C14,"">=2"")>0,SUMIFS(C18,C2,RC2,C4,RC4,C3,RC3,C17,""<""&RC17)>=RC17)),""можно расширить"","""")"
    Selection.AutoFill Destination:=Range("V2:V34"), Type:=xlFillDefault
    Range("V2:V34").Select
   Dim smallrng As Range
     For Each smallrng In Selection.Areas
         smallrng.Value = smallrng.Value
     Next smallrng
End Sub
[/vba]
К сообщению приложен файл: __.xlsm(22.1 Kb)


Сообщение отредактировал nikonka_muss - Пятница, 30.04.2021, 21:38
 
Ответить
СообщениеДобрый вечер.
Прошу помочь с макросами. Изначально составила формулы, по которым планировала делать расчеты. Но в файле будет 500000 строк, в итоге целый день шли расчеты, формулы пересчитывались, но так и не пересчитались.
Попробовала написать макрос макрорекордером, но быстрее работать не стало. Ниже макрос, пример тоже во вложении.
Помогите допилить его , пжлст, чтобы работало быстрее
Ну хоть два часа чтобы считалось, а не 8 ))

[vba]
Код
Sub Расшир()
    ActiveCell.FormulaR1C1 = _
        "=IF(AND(RC[-3]=""проверить фейс"",OR(COUNTIFS(C2,RC2,C4,RC4,C17,"">=""&RC17,C3,RC3,C14,"">=2"")>0,SUMIFS(C18,C2,RC2,C4,RC4,C3,RC3,C17,""<""&RC17)>=RC17)),""можно расширить"","""")"
    Selection.AutoFill Destination:=Range("V2:V34"), Type:=xlFillDefault
    Range("V2:V34").Select
   Dim smallrng As Range
     For Each smallrng In Selection.Areas
         smallrng.Value = smallrng.Value
     Next smallrng
End Sub
[/vba]

Автор - nikonka_muss
Дата добавления - 30.04.2021 в 21:37
_Igor_61 Дата: Пятница, 30.04.2021, 22:39 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 389
Репутация: 78 ±
Замечаний: 0% ±

Excel 2007
For Each
Макрорекордер это так записал? Подскажите, где такой макрорекордер можно найти :)
1. Для ускорения: проверьте файл на лишнее (УФ и обычное форматирование и объекты)
и удалите лишнее (например, у Вас до конца листа заливка по столбцам, а в рабочем файле возможно и еще что-то есть).
Для этого наберите в поисковике "как уменьшить размер файла Excel"
2. Если не поможет опишите то, что должны делать Ваши формулы (какой из чего результат должен появиться в конкретных ячейках)
3. Вместо AutoFill можно использовать Range(такой-то)=формула такая-то. Тогда формула вставится сразу в весь диапазон а не по очереди в каждую ячейку.
 
Ответить
Сообщение
For Each
Макрорекордер это так записал? Подскажите, где такой макрорекордер можно найти :)
1. Для ускорения: проверьте файл на лишнее (УФ и обычное форматирование и объекты)
и удалите лишнее (например, у Вас до конца листа заливка по столбцам, а в рабочем файле возможно и еще что-то есть).
Для этого наберите в поисковике "как уменьшить размер файла Excel"
2. Если не поможет опишите то, что должны делать Ваши формулы (какой из чего результат должен появиться в конкретных ячейках)
3. Вместо AutoFill можно использовать Range(такой-то)=формула такая-то. Тогда формула вставится сразу в весь диапазон а не по очереди в каждую ячейку.

Автор - _Igor_61
Дата добавления - 30.04.2021 в 22:39
Pelena Дата: Суббота, 01.05.2021, 07:36 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 17868
Репутация: 3975 ±
Замечаний: ±

Excel 2016 & Mac Excel
Вместо AutoFill можно использовать Range(такой-то)=формула такая-то
Я всегда тоже так делала, но не так давно столкнулась с ситуацией, когда надо было заполнить формулой порядка 50 000 строк. Была удивлена, что AutoFill справился значительно быстрее.


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
Сообщение
Вместо AutoFill можно использовать Range(такой-то)=формула такая-то
Я всегда тоже так делала, но не так давно столкнулась с ситуацией, когда надо было заполнить формулой порядка 50 000 строк. Была удивлена, что AutoFill справился значительно быстрее.

Автор - Pelena
Дата добавления - 01.05.2021 в 07:36
bmv98rus Дата: Суббота, 01.05.2021, 13:27 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3651
Репутация: 647 ±
Замечаний: 0% ±

Excel 2013/2016
пролемма не в 500000 строках данных, а в применении формул 500000 раз.
1.
Код
COUNTIFS($C:$C;$C2;$D:$D;$D2;$N:$N;">1";$B:$B;$B2);$O2=1)
который обсчитывает остальные 500 000 строк. В отличии от SUMIFS/SUMIF и даже от COUNTIF он не ограничивает область используемой и работает дольше. То есть нужно ограничит диапазон
2. все формула
Код
=IF(AND(S2="проверить фейс";OR(COUNTIFS($B:$B;$B2;$D:$D;$D2;$Q:$Q;">="&$Q2;$C:$C;$C2;$N:$N;">=2")>0;SUMIFS($R:$R;$B:$B;$B2;$D:$D;$D2;$C:$C;$C2;$Q:$Q;"<"&$Q2)>=$Q2));"можно расширить";"")

в OR (ИЛИ) всегда будет произведен расчет и количества и суммы по условию, с учетом массива строк - это лишние затраты.
Код
=IF(AND(S2="проверить фейс";IF(COUNTIFS($B;1:$B$600000;$B2;$D$1:$D$600000;$D2;$Q$1:$Q$600000;">="&$Q2;$C$1:$C$600000;$C2;$N$1:$N$600000;">=2");1;IF(SUMIFS($R:$R;$B:$B;$B2;$D:$D;$D2;$C:$C;$C2;$Q:$Q;"<"&$Q2)>=$Q2;1)));"можно расширить";"")


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


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Воскресенье, 02.05.2021, 07:30
 
Ответить
Сообщениепролемма не в 500000 строках данных, а в применении формул 500000 раз.
1.
Код
COUNTIFS($C:$C;$C2;$D:$D;$D2;$N:$N;">1";$B:$B;$B2);$O2=1)
который обсчитывает остальные 500 000 строк. В отличии от SUMIFS/SUMIF и даже от COUNTIF он не ограничивает область используемой и работает дольше. То есть нужно ограничит диапазон
2. все формула
Код
=IF(AND(S2="проверить фейс";OR(COUNTIFS($B:$B;$B2;$D:$D;$D2;$Q:$Q;">="&$Q2;$C:$C;$C2;$N:$N;">=2")>0;SUMIFS($R:$R;$B:$B;$B2;$D:$D;$D2;$C:$C;$C2;$Q:$Q;"<"&$Q2)>=$Q2));"можно расширить";"")

в OR (ИЛИ) всегда будет произведен расчет и количества и суммы по условию, с учетом массива строк - это лишние затраты.
Код
=IF(AND(S2="проверить фейс";IF(COUNTIFS($B;1:$B$600000;$B2;$D$1:$D$600000;$D2;$Q$1:$Q$600000;">="&$Q2;$C$1:$C$600000;$C2;$N$1:$N$600000;">=2");1;IF(SUMIFS($R:$R;$B:$B;$B2;$D:$D;$D2;$C:$C;$C2;$Q:$Q;"<"&$Q2)>=$Q2;1)));"можно расширить";"")


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

Автор - bmv98rus
Дата добавления - 01.05.2021 в 13:27
doober Дата: Суббота, 01.05.2021, 15:52 | Сообщение № 5
Группа: Друзья
Ранг: Ветеран
Сообщений: 799
Репутация: 300 ±
Замечаний: 0% ±

Excel 2010
Пока писал макрос вместо формул, Медведь обогнал на повороте.
Вдруг макрос быстрее формул работать будет




Сообщение отредактировал doober - Суббота, 01.05.2021, 15:53
 
Ответить
СообщениеПока писал макрос вместо формул, Медведь обогнал на повороте.
Вдруг макрос быстрее формул работать будет

Автор - doober
Дата добавления - 01.05.2021 в 15:52
bmv98rus Дата: Суббота, 01.05.2021, 19:03 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3651
Репутация: 647 ±
Замечаний: 0% ±

Excel 2013/2016
doober, ну формульный вариант провальный, конечно оптимизация дала свой результат
Код
=IF(AND(COUNTIFS($C:$C,$C3,$D:$D,$D3,$N:$N,">1",$B:$B,$B3),$O3=1),"проверить фейс","")
39,125
Код
=IF(AND(S3="проверить фейс",OR(COUNTIFS($B:$B,$B3,$D:$D,$D3,$Q:$Q,">="&$Q3,$C:$C,$C3,$N:$N,">=2")>0,SUMIFS($R:$R,$B:$B,$B3,$D:$D,$D3,$C:$C,$C3,$Q:$Q,"<"&$Q3)>=$Q3)),"можно расширить","")
72,61719

Код
=IF(AND(COUNTIFS($C$1:$C$600000,$C3,$D$1:$D$600000,$D3,$N$1:$N$600000,">1",$B$1:$B$600000,$B3),$O3=1),"проверить фейс","")
38,88281
Код
=IF(AND(S3="проверить фейс",IF(COUNTIFS($B:$B,$B3,$D:$D,$D3,$Q:$Q,">="&$Q3,$C:$C,$C3,$N:$N,">=2"),1,IF(SUMIFS($R:$R,$B:$B,$B3,$D:$D,$D3,$C:$C,$C3,$Q:$Q,"<"&$Q3)>=$Q3,1))),"можно расширить","")
37,5625
но замер я делал на 100 расчетах по 500000 строкам заполненным.
Можно предположить что расчет 500000 займет в 5000 раз больше и это неприемлемо.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщениеdoober, ну формульный вариант провальный, конечно оптимизация дала свой результат
Код
=IF(AND(COUNTIFS($C:$C,$C3,$D:$D,$D3,$N:$N,">1",$B:$B,$B3),$O3=1),"проверить фейс","")
39,125
Код
=IF(AND(S3="проверить фейс",OR(COUNTIFS($B:$B,$B3,$D:$D,$D3,$Q:$Q,">="&$Q3,$C:$C,$C3,$N:$N,">=2")>0,SUMIFS($R:$R,$B:$B,$B3,$D:$D,$D3,$C:$C,$C3,$Q:$Q,"<"&$Q3)>=$Q3)),"можно расширить","")
72,61719

Код
=IF(AND(COUNTIFS($C$1:$C$600000,$C3,$D$1:$D$600000,$D3,$N$1:$N$600000,">1",$B$1:$B$600000,$B3),$O3=1),"проверить фейс","")
38,88281
Код
=IF(AND(S3="проверить фейс",IF(COUNTIFS($B:$B,$B3,$D:$D,$D3,$Q:$Q,">="&$Q3,$C:$C,$C3,$N:$N,">=2"),1,IF(SUMIFS($R:$R,$B:$B,$B3,$D:$D,$D3,$C:$C,$C3,$Q:$Q,"<"&$Q3)>=$Q3,1))),"можно расширить","")
37,5625
но замер я делал на 100 расчетах по 500000 строкам заполненным.
Можно предположить что расчет 500000 займет в 5000 раз больше и это неприемлемо.

Автор - bmv98rus
Дата добавления - 01.05.2021 в 19:03
doober Дата: Суббота, 01.05.2021, 22:02 | Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 799
Репутация: 300 ±
Замечаний: 0% ±

Excel 2010
Не поленился, набил файл на 600 тыс строк
30 секунд работал макрос


 
Ответить
СообщениеНе поленился, набил файл на 600 тыс строк
30 секунд работал макрос

Автор - doober
Дата добавления - 01.05.2021 в 22:02
bmv98rus Дата: Воскресенье, 02.05.2021, 07:31 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3651
Репутация: 647 ±
Замечаний: 0% ±

Excel 2013/2016
600 тыс строк
руками? :D


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщение
600 тыс строк
руками? :D

Автор - bmv98rus
Дата добавления - 02.05.2021 в 07:31
doober Дата: Воскресенье, 02.05.2021, 09:14 | Сообщение № 9
Группа: Друзья
Ранг: Ветеран
Сообщений: 799
Репутация: 300 ±
Замечаний: 0% ±

Excel 2010
руками?

hands Я руками больше 2-х не набиваю никогда, ленивый очень


 
Ответить
Сообщение
руками?

hands Я руками больше 2-х не набиваю никогда, ленивый очень

Автор - doober
Дата добавления - 02.05.2021 в 09:14
nikonka_muss Дата: Воскресенье, 02.05.2021, 16:02 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

при запуске макроса в тестовом файле, который прикладывала, все работает. Скопировала в этот файл другие строчки (ни заголовки ни порядок столбцов не поменялся) выдаёт ошибку "Subscript out of range". И вот эта строка в макросе подсвечивается жёлтым.

в чем может быть причина ? Приложила файл

[vba]
Код
 If keys(i) > dNO(n, 4) Then
[/vba]
К сообщению приложен файл: 9053270.xlsm(62.1 Kb)


Сообщение отредактировал nikonka_muss - Воскресенье, 02.05.2021, 16:24
 
Ответить
Сообщениепри запуске макроса в тестовом файле, который прикладывала, все работает. Скопировала в этот файл другие строчки (ни заголовки ни порядок столбцов не поменялся) выдаёт ошибку "Subscript out of range". И вот эта строка в макросе подсвечивается жёлтым.

в чем может быть причина ? Приложила файл

[vba]
Код
 If keys(i) > dNO(n, 4) Then
[/vba]

Автор - nikonka_muss
Дата добавления - 02.05.2021 в 16:02
nikonka_muss Дата: Воскресенье, 02.05.2021, 16:10 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Макрорекордер это так записал? Подскажите, где такой макрорекордер можно найти


это я уже сама пыталась дописать)) думала если будет вставляться значениями, то быстрее получится)

Ограничила, кстати, в формуле диапозон от 1 до 500 000, быстрее посчиталось на пару часов, но все равно конечно несколько часов заняло это
 
Ответить
Сообщение
Макрорекордер это так записал? Подскажите, где такой макрорекордер можно найти


это я уже сама пыталась дописать)) думала если будет вставляться значениями, то быстрее получится)

Ограничила, кстати, в формуле диапозон от 1 до 500 000, быстрее посчиталось на пару часов, но все равно конечно несколько часов заняло это

Автор - nikonka_muss
Дата добавления - 02.05.2021 в 16:10
doober Дата: Воскресенье, 02.05.2021, 19:13 | Сообщение № 12
Группа: Друзья
Ранг: Ветеран
Сообщений: 799
Репутация: 300 ±
Замечаний: 0% ±

Excel 2010
Пропустили
If C.Exists(dNO(n, 4)) Then
keys = C.keys

For i = 0 To C.Count - 1
К сообщению приложен файл: 7767503.xlsm(66.8 Kb)


 
Ответить
СообщениеПропустили
If C.Exists(dNO(n, 4)) Then
keys = C.keys

For i = 0 To C.Count - 1

Автор - doober
Дата добавления - 02.05.2021 в 19:13
Chula7094 Дата: Воскресенье, 02.05.2021, 20:26 | Сообщение № 13
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Здравствуйте!
Могу предложить следующий вариант решения, обо тоже знаю, что если использовать в vba метод задействования изменения какого-то состояние ячейки, будь то значение, формат и т.д, то ресурс памяти задействуется значительно.
Гораздо проще в этом случае использовать массив.
Допустим, у нас имеется некий структурированный непрерывный диапазон данных с заголовками, как полагается, располагающийся в диапазоне, начиная с ячейки A2.
Это дает нам возможность определить размер нашего массива.
[vba]
Код
Option Base 1
With ThisWorkBook.WorkSheets("Название обрабатываемого листа")
Dim ArrData() as Variant, I as Long
ReDim ArrData(.Cells(1, 1).CurrentRegoin.Rows.Count - 1)
'Запускаем цикл заполнения массива данными, где мы используем объект Application.WorkSeetFunction
I=1
Do While .Cells(I+1,1).Value<>""
'Производим анализ
If .Cells(I+1,15)Value=1 And Application.WorkSeetFunction.CountIfs("условия функции") Then '- вот здесь метод CountIfs, соответствующий Вашей функции СУММЕСЛИМН, нужно заполнить корректными данными
ArrData(I)="проверить фейс"
Else
ArrData(I)=""
End if
Loop
'А дальше просто заполняете нужный Вам диапазон данными массива:
.Range(.Cells(2, 19), .Cells(UBound(ArrData) + 1, 19)).Value = ArrData
End With
[/vba]


Сообщение отредактировал Chula7094 - Воскресенье, 02.05.2021, 23:56
 
Ответить
СообщениеЗдравствуйте!
Могу предложить следующий вариант решения, обо тоже знаю, что если использовать в vba метод задействования изменения какого-то состояние ячейки, будь то значение, формат и т.д, то ресурс памяти задействуется значительно.
Гораздо проще в этом случае использовать массив.
Допустим, у нас имеется некий структурированный непрерывный диапазон данных с заголовками, как полагается, располагающийся в диапазоне, начиная с ячейки A2.
Это дает нам возможность определить размер нашего массива.
[vba]
Код
Option Base 1
With ThisWorkBook.WorkSheets("Название обрабатываемого листа")
Dim ArrData() as Variant, I as Long
ReDim ArrData(.Cells(1, 1).CurrentRegoin.Rows.Count - 1)
'Запускаем цикл заполнения массива данными, где мы используем объект Application.WorkSeetFunction
I=1
Do While .Cells(I+1,1).Value<>""
'Производим анализ
If .Cells(I+1,15)Value=1 And Application.WorkSeetFunction.CountIfs("условия функции") Then '- вот здесь метод CountIfs, соответствующий Вашей функции СУММЕСЛИМН, нужно заполнить корректными данными
ArrData(I)="проверить фейс"
Else
ArrData(I)=""
End if
Loop
'А дальше просто заполняете нужный Вам диапазон данными массива:
.Range(.Cells(2, 19), .Cells(UBound(ArrData) + 1, 19)).Value = ArrData
End With
[/vba]

Автор - Chula7094
Дата добавления - 02.05.2021 в 20:26
bmv98rus Дата: Понедельник, 03.05.2021, 10:50 | Сообщение № 14
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3651
Репутация: 647 ±
Замечаний: 0% ±

Excel 2013/2016
Chula7094, Если следовать задумке ТС, то и ваш метод можно использовать, но я наглядно показал, что на объеме значений функции листа становятся не столь стремительными и они не станут быстрее от применения не на лист а в коде.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеChula7094, Если следовать задумке ТС, то и ваш метод можно использовать, но я наглядно показал, что на объеме значений функции листа становятся не столь стремительными и они не станут быстрее от применения не на лист а в коде.

Автор - bmv98rus
Дата добавления - 03.05.2021 в 10:50
nikonka_muss Дата: Понедельник, 03.05.2021, 17:53 | Сообщение № 15
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Взяла макрос doober
это просто праздник какой-то. 30 секунд и готово. Спасибо огромнейшее за помощь !!!
 
Ответить
СообщениеВзяла макрос doober
это просто праздник какой-то. 30 секунд и готово. Спасибо огромнейшее за помощь !!!

Автор - nikonka_muss
Дата добавления - 03.05.2021 в 17:53
nikonka_muss Дата: Пятница, 07.05.2021, 14:41 | Сообщение № 16
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Добрый день
Начала работать в этом файле с макросом, а он не верно считает данные. По формуле одни данные, макрос - немного отличаются.
doober, можете помочь ? Пожалуйста
К сообщению приложен файл: 7767503-5-.xlsm(29.0 Kb)
 
Ответить
СообщениеДобрый день
Начала работать в этом файле с макросом, а он не верно считает данные. По формуле одни данные, макрос - немного отличаются.
doober, можете помочь ? Пожалуйста

Автор - nikonka_muss
Дата добавления - 07.05.2021 в 14:41
doober Дата: Пятница, 07.05.2021, 18:08 | Сообщение № 17
Группа: Друзья
Ранг: Ветеран
Сообщений: 799
Репутация: 300 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте.
Смогу, только опишите логику получения данных.
Только на формулы не опирайтесь, своими словами.
Я пытался адаптировать , как считает формула, мог и ошибиться или что то не учел


 
Ответить
СообщениеЗдравствуйте.
Смогу, только опишите логику получения данных.
Только на формулы не опирайтесь, своими словами.
Я пытался адаптировать , как считает формула, мог и ошибиться или что то не учел

Автор - doober
Дата добавления - 07.05.2021 в 18:08
nikonka_muss Дата: Пятница, 07.05.2021, 22:41 | Сообщение № 18
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Колонка true (СТМ) - эти позиции должны быть по 2 шт минимум. В идеале. Колонка ЛОЖЬ - количество по остальным позициям, за счет которых я могу увеличить СТМ.
Проверить фейс - я смотрю по определенной группе, внутри полки, есть ли где СТМ 1 штука, при этом ЛОЖЬ - больше 1.
Можно расширить - по тем позициям, по которым выяснили, что нужно проверить фейс, смотрим есть ли возможность поставить не 1, а 2 штуки, за счет позиций из колонки ЛОЖЬ. Для этого я по ширине пытаюсь понять хватит ли мне места, так как у всех позиций ширина разная.
Вот например, позиция стм 5 см (1 шт), а другая обычная (ложь) - 3 см (2 шт). И за счет уменьшения ее, все равно стм не увеличить, места не хватит.
А там где места хватает - коммент можно расширить
 
Ответить
СообщениеКолонка true (СТМ) - эти позиции должны быть по 2 шт минимум. В идеале. Колонка ЛОЖЬ - количество по остальным позициям, за счет которых я могу увеличить СТМ.
Проверить фейс - я смотрю по определенной группе, внутри полки, есть ли где СТМ 1 штука, при этом ЛОЖЬ - больше 1.
Можно расширить - по тем позициям, по которым выяснили, что нужно проверить фейс, смотрим есть ли возможность поставить не 1, а 2 штуки, за счет позиций из колонки ЛОЖЬ. Для этого я по ширине пытаюсь понять хватит ли мне места, так как у всех позиций ширина разная.
Вот например, позиция стм 5 см (1 шт), а другая обычная (ложь) - 3 см (2 шт). И за счет уменьшения ее, все равно стм не увеличить, места не хватит.
А там где места хватает - коммент можно расширить

Автор - nikonka_muss
Дата добавления - 07.05.2021 в 22:41
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Формула СЧЁТЕСЛИМН для 500000 строк (макрос) (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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