Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
SUMIF для МАССИВА, Необходимо применить функцию SUMIF для диапазона данных в массиве, а не на листе
 
Цитата
написал:
П.С. 5 это не столбец Q.
Да, я для примера поставил 5й столбец. Спасибо большое за помощь  
SUMIF для МАССИВА, Необходимо применить функцию SUMIF для диапазона данных в массиве, а не на листе
 
А если все таки считать на лесте через Worksheetfunction.
Есть ли возможность заменить диапазон Q1:Q57 на какой нибудь типа такого range(cells(1,5), cells(lastRow, 5))   ? ? ?
SUMIF для МАССИВА, Необходимо применить функцию SUMIF для диапазона данных в массиве, а не на листе
 
Цитата
написал:
Не совсем внимательно прочитал задание. Если у вас есть формула, которая делает вычисление на листе, перенос ее в VBA вы скорость вычислений не измените. Просто у вас освободится ячейка на листе занятая этой формулой, но вычисление будет все равно на листе. Если вы перенесете данные в массив VBA, то в массиве никакая формула работать не будет, надо писать процедуру которая будет суммировать по условию. Или использовать UDF которую предложил Sanja, если вам результат нужен на листе.
Ну да, в этом и суть. Нужно перенесли все вычисления, что бы не делать их на листе. Просто не знал как написать процедуру подходящую. Чуть позже попробую вариант, который предложил Sanja и обязательно отпишусь
SUMIF для МАССИВА, Необходимо применить функцию SUMIF для диапазона данных в массиве, а не на листе
 
Цитата
написал:
е думаю, что формула листа, примененная в коде, будет думать быстрее. Лучше написать свою функцию. Что -то типа такого
Попробую, спасибо большое
SUMIF для МАССИВА, Необходимо применить функцию SUMIF для диапазона данных в массиве, а не на листе
 
Вот пример файла
и в нем макрос - 2 строки. Если жестко прописать ДИАПАЗОН, то все работает, а вот как заменить адреса ячеек на диапазон в массиве я не пойму.
Код
Sub sum_if()


a = WorksheetFunction.SumIf(Range("Q1:Q57"), "<500")
b = WorksheetFunction.SumIf(Range("H1:H57"), "а", Range("Q1:Q57"))


End Sub
SUMIF для МАССИВА, Необходимо применить функцию SUMIF для диапазона данных в массиве, а не на листе
 
Добрый день)
Подскажите пожалуйста, есть ли возможность применить такую функцию :
a = WorksheetFunction.SumIf(Range("E2:E11"), "A1 = A3")
но не для листа, а для массива.
В таблице более 100 тыс. строк и около 100 столбцов.
Нужно получить сложения по условию. Формула СУММЕСЛИ на листе работает, но как сами понимаете ОЧЕНЬ ДОЛГО ДУМАЕТ.
Можно ли как то применить эту же функцию к массиву, и как тогда указать диапазон?
Заранее, спасибо большое за помощь.
Сравнить наибольшее значение в соседних ячейках по условию, и заменить мЕньшие значения бОльшими.
 
Спасибо большое!
Да, в основном рабочем файле данная формула тоже работает, но к сожалению тоже очень долго при большом объеме данных.
Вот я и хотел узнать, может есть какой то более оптимизированный вариант? Может стороннюю процедуру, которая вызывается только в том случае, если цены у одного ШК разные и тогда компьютеру не придется в холостую просчитывать весь список значений, даже там, где цены одинаковые и ничего менять не надо??  
Сравнить наибольшее значение в соседних ячейках по условию, и заменить мЕньшие значения бОльшими.
 
Доброго времени суток всем.
Несколько дней бьюсь над задачей и хотя и решил ее примитивнейшим образом, хочу попросить помощи в более оптимальном решении.

Есть таблица с данными.
Необходимо найти одинаковые значения в столбце "С" (это штрихкоды товара) и сравнить цены (столбец "Е").
Далее найти наибОльшую цену и присвоить ее всем ячейкам в столбце "Е" соответствующим данному ШТРИХКОДУ.

Сделал цикл For each
Но, что бы он все поменял как надо, его надо прогонять 10 раз (т.к. всегда 9-10 повторных штрихкодов), а это очень замедляет работу, особенно если учесть, что в рабочем файле 70тыс строк.

Математического склада ума у меня нет и ничего толкового придумать не могу.
Если поможете найти решение, буду очень благодарен.
файл примера с моим решением прилагаю

Всем хорошего дня.
Код
Sub сравнить_цены()
Dim LR As Long
LR = Sheets("ОСТАТКИ").Cells(Rows.Count, "A").End(xlUp).Row
 
Dim CELL_SK As Range
For Each CELL_SK In Range("c2:c" & LR)
'Сравниваем если рядом 2 одинаковых Штрихкода(столбец С) и цены(столбец Е)при этом не равны, тогда: заменяем мЕньшую цену на бОльшую
    If CELL_SK = CELL_SK.Offset(1, 0) And CELL_SK.Offset(0, 2) <> CELL_SK.Offset(2, 2) Then
        If CELL_SK.Offset(0, 2) > CELL_SK.Offset(1, 2) Then
        CELL_SK.Offset(1, 2) = CELL_SK.Offset(0, 2)
        ElseIf CELL_SK.Offset(0, 2) < CELL_SK.Offset(1, 2) Then
        CELL_SK.Offset(0, 2) = CELL_SK.Offset(1, 2)
        End If
    End If
Next CELL_SK
End Sub
Макрос ошибочно выборочно игнорирует копирование данных
 
Цитата
Kuzmich написал:
Посмотрите пример сбора данных со всех листов На листе Остатки кнопка Сбор со всех листов
Попробовал. Спасибо большое за такой удобный метод. На моем компьютере отлично отрабатывает. А на проблемном тоже почему то не докопировал 1700 строк((( Причем я в макросе подправил код, что бы не создавалась новая вкладка, а очищалась старая, и все равно тоже самое. Попробую на том компьютере поставить свежий офис. Больше не хочу Ваше время отнимать, потому что судя по всему, я не могу корректно и точно сформулировать проблему. Всем спасибо большое, кто откликнулся и постарался помочь.  
Макрос ошибочно выборочно игнорирует копирование данных
 
Цитата
vikttur написал:
Тему нужно создавать по конкретной проблеме
Если говорить про конкретный участок с кодом, то это вот эта часть:
Скрытый текст
Макрос ошибочно выборочно игнорирует копирование данных
 
Цитата
Kuzmich написал:
Оставьте лист Остатки в вашей книге и очищайте его в начале макросаСделайте цикл по всем листам, кроме листа Остатки, и переносите в него нужные данные с каждого листа.
Спасибо большое. Сейчас попробую. В рабочем файле просто кроме вкладок с магазинами и остатками еще куча других. но это я постараюсь обойти
Макрос ошибочно выборочно игнорирует копирование данных
 
Цитата
Ігор Гончаренко написал:
прилагайте усилия чтобы привлечь к решению максимальное количество людейкому-то интересно по не работающему коду разгадать цель, для чего он был написан и поправить, кому-то нетмне интересно прочитать условия задачи, а не разгадывать ребус "а что за задача скрывается за этой неработающей фигней"
Я и рад стараться, просто у меня не получается сразу отвечать на сообщения. Форум пишет: "слишком часто отправляете сообщения, потерпите несколько минут"

Задача, как я и написал: собрать данные с нескольких магазинов с товарами и получить наглядную таблицу по остатком, чего где сколько осталось и что куда нужно дозаказать. А фигня то работала раньше, в этом вся соль. И сейчас каким то чудом на моем компе работает нормально, а на других нет(((

п.с. прошу прощения, если где то некорректно описываю вопрос или задачу. В первый раз на форуме пишу. Вроде и правила форума почитал заранее, что бы не опростоволоситься, а все равно что то коряво у меня выходит, как и с кодом макроса))  
Макрос ошибочно выборочно игнорирует копирование данных
 
Цитата
Kuzmich написал:
И при каждом запуске в первую строку всех листов добавляется слово магазин?
Да, я сделал так, что бы просто подготовить вкладки, а потом в готовом виде скопировать все данные и вставить в лист "остатки"
Макрос ошибочно выборочно игнорирует копирование данных
 
Цитата
vikttur написал:
Какая конкретно задача вызывает ошибку?
Получается по моему макросу неправильно копируются диапазоны из вкладок во вкладку "остатки". Он почему то копирует не все (например из 9000 строк может скопировать и вставить только 6000, а может и 8800).
Я не смог даже логики какой то найти, к сожалению
Макрос ошибочно выборочно игнорирует копирование данных
 
Цитата
Kuzmich написал:
а вы при каждом запуске макроса создаете лист "Остатки"?
Да, Эта процедура делается примерно 2 раза в неделю.
Каждый раз создается новый лист "остатки", старый предварительно удаляется  
Макрос ошибочно выборочно игнорирует копирование данных
 
Цитата
doober написал:
А почему версия файла 2003?
У меня везде офис 2010, но почему то "сохранить как" предлагает только в таких вариантах как на картинке.

То, что "на грани фола" не спорю))) яж написал, что все очень примитивно, методом тыка.  
Макрос ошибочно выборочно игнорирует копирование данных
 
Цитата
Ігор Гончаренко написал:  обьясните какую задачу пытаетесь решить
Нужно:
1 - Собрать все данные со всех вкладок в одну.
2 - Поменять местами столбцы (столбец B поместить в столбец G, столбец D поместить в столбец B)
3 - Добавить столбец А, где присвоить строке имя вкладки в зависимости от того откуда эта строка взята
4 - ячейкам каждой вкладки присвоить собственный (конкретный) цвет. Что бы в итоговом файле не только благодаря подписи в первом столбце было понятно из какой вкладки это подтянуто, но и цветом было выделено.

Я по сути, сначала покрасил все вкладки  и добавил столбец с именем, а потом уже всю кучу скопировал в новую вкладку "Остатки"
Итоговый результат должен получатся такой какой получается при запуске макроса сейчас. Но он почему то неправильно работает на двух других компьютерах.

Понятно, что методы, которыми я пользовался далеки от оптимальных, но это хоть как то работало. Если еще нужна какая то информация, спрашивайте пожалуйста.  
Макрос ошибочно выборочно игнорирует копирование данных
 
Но ведь этот макрос, хоть он и корявый сам по себе, прекрасно работал около полугода на всех компьютерах. Я его не менял. А пару недель назад начались проблемы, причем не на всех компьютерах.....
Макрос ошибочно выборочно игнорирует копирование данных
 
Доброго времени суток всем!
Помогите разобраться с задачкой.
Версия Ексель 2010 (на всех проверяемых компьютерах)
Операционная система Windows 10  (на всех проверяемых компьютерах)
Есть файл ексель с несколькими вкладками (урезанную версию с данными прикладываю)
Прописал простенький макрос, который собирает все данные в кучу, с определенными требованиями к форматированию.
Все сделал примитивно, как смог. И всегда ответы на все вопросы находил на Вашем форуме.
Но сейчас какая то мистика происходить стала.
Данный файл (точнее макрос) прекрасно работает на моем компьютере но на двух других, он работает без ошибок НО НЕПРАВИЛЬНО.
Т.е. он запускается, выполняется (но выдает некорректные данные).
когда пытаюсь скопировать целый столбец с 60тыс ячеек, он копировал только 12288 ячеек и все. (столбец копировал и вставлял, что бы просто местами поменять)
Убрал копирование целого столбца и вставил цикл, что бы он копировал ячейку за ячейкой. эта проблема ушла, но возникла другая, еще более загадочная. После выполнения макроса, он выборочно не переносит некоторые строки из первичных вкладок. Причем каждый раз разные. Этого я совсем не могу понять.
Когда запускаю макрос на своем компе, все работает отлично.
Что бы было понятно сколько строк не переносится - в каждой из 10 вкладок примерно по 5000-1000 строк в 6 столбцах всего около 65000 значений в общей вкладке получается по итогу, так вот если запускать на "проблемных" компах, то там получается всегда разное количество строк в меньшую сторону. т.е. он по каким то неведомым причинам не копирует некоторые строки из вкладок. И каждый раз разные.
Я просто даже не понимаю  в каком направлении "копать". Может вирус там какой то, который нарушает работу макроса. Может с "железом" что то. Просто раньше все работало прекрасно и требуемая задача выполнялась. А недели 2 назад начались эти "танцы с бубном".
Или все таки проблема с моими руками? Подскажите пожалуйста, в чем может быть проблема.
Может проблема в размере вкладок?
Заранее спасибо за уделенное время
Страницы: 1
Loading...