Цитата |
---|
KL написал: If cell Is Nothing Then arr(UBound(arr)) = c.Value ReDim Preserve arr(UBound(arr) + 1) End If |
Прошу прощения, что сразу не уточнил данный вопрос - в процессе доработки придумал, как еще можно оптимизировать файл...
19.01.2016 14:12:58
Прошу прощения, что сразу не уточнил данный вопрос - в процессе доработки придумал, как еще можно оптимизировать файл... |
|||
|
18.01.2016 19:15:57
Подскажите, пожалуйста, а как в случае с массивами добавить условие на проверку шестого столбца в файле Report, как было у меня в макросе:
If Cells(i, 2).Offset(, 4) = "BRV" Then Я правильно понимаю, это должно быть как исправления ниже?
Изменено: |
|||
|
18.01.2016 15:25:52
Добрый день!
Помогите, пожалуйста, разобраться почему не работает макрос и как исправить код. Я хочу сравнить столбец 3 из книги "Sample" со столбцом 2 из книги "Report", и если в Sample нет каких-то значений, добавить их туда. Примеры файлов во вложении. Я уже и гуглил, и яндил...скачал кучу подобных макросов и попробовал оптимизировать под себя...сначала с созданием библиотек, потом с созданием массивов - ничего не работает. Перешел уже на простейший вариант с перебором, но и он работать не хочет. Я в отчаяньи. Заранее большое спасибо!
Изменено: |
|
|
12.02.2014 23:59:59
|
|||
|
12.02.2014 23:13:58
Спасибо большое и
К сожалению, я не знаю, как нужно...пишу макрос, зная только основные понятия. Знаю только как он должен работать в идеале - описал выше. Нашел в сети следующее решение, написанное
Заранее спасибо! З.Ы. Возможно, модератору будет интересно: В сообщения постоянно пропадают скобки - автозамена меняет их на смайлик. После исправления скобка все равно не отображается в сообщении. |
|||
|
12.02.2014 21:50:53
Добрый вечер!
Уважаемые форумчане, сразу хочу попросить прощение за отсутствие примера - выкладываю только часть макроса, сам макрос довольно большой и неоптимальный. Если пример необходим - напишите, пожалуйста, создам отдельный файл. Часть большего макроса - это макрос, приведенный ниже. Он должен сравнивать список, размещенный на листе, который я назвал "BazaSht" с несмежным массивом данных - range("D10:P33" ;) . И если в массиве есть значение длиной больше 5 символов, которого нет в списке - добавлять его в список снизу. Но он выдает ошибку "Compile error: End If without block If" в строке, на которую указывает стрелка. Подскажите, пожалуйста почему и как это исправить. Сам испробовал уже различные варианты - ничего не помогает...
|
|||
|
01.03.2013 13:25:59
Добрый день!
Помогите, пожалуйста, написать макрос, который собирал бы данные из разных файлов (файлов несколько десятков) и консолидировал в один. Для примера приложил два файлика - нужно из файлика 2 найти данные по фруктам и коробкам и приплюсовать их в соответствующую ячейку файлика 1. Названия фруктов могут быть расположены в разном порядке, но порядок коробок всегда одинаков. Своими силами получилось написать вот такое ничтожество, которое не работает потому что я неправильно расположил циклы, но ответ, как это сделать корректно, никак не приходит: Sub Try() Dim i As Long Dim n As Long For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row For n = 2 To Cells(Rows.Count, 1).End(xlUp).Row If Cells(i, 1) = Workbooks("2.xlsx") .Worksheets("1") .Cells(n, 1) Then Cells(i, 1).Offset(0, 1) = Cells(i, 1).Offset(0, 1) + Workbooks("2.xlsx") .Worksheets("1") .Cells(n, 1) Cells(i, 1).Offset(0, 2) = Cells(i, 1).Offset(0, 2) + Workbooks("2.xlsx") .Worksheets("1") .Cells(n, 1) Cells(i, 1).Offset(0, 3) = Cells(i, 1).Offset(0, 3) + Workbooks("2.xlsx") .Worksheets("1") .Cells(n, 1) End If Next Next End Sub Посмотрел старые макросы, которые удалось с Вашей помощью реализовать - наверное можно данные с файла 2 загнать в массив, и потом использовать его - но ранее пробовал писать что-то только с одномерными массивами, и потому не знаю, как обращаться с двумерными...та же история с коллекциями...понимаю, что даже если этот вариант заработает, то он будет не оптимальным. Может, подскажете, как его написать изаначально более оптимальным? Что лучше использовать? Заранее очень благодарен!
Изменено: |
|
|
24.12.2012 13:15:12
Я пробовал.
Для файла из вложения делал это с помощью формул "=AND(A1=MIN($A1:$C1);ISNUMBER(A1))" и "=AND(F1=MIN($F1:$H1);ISNUMBER(F1))" соответственно. Но при этом выделились абсолютно некорректные значения. Возможно, ошибка в формулах? Если да, подскажите,пожалуйста, какая? Заранее спасибо!
Изменено: |
|
|
24.12.2012 13:07:33
Добрый день!
Нашел в интернете как можно с помощью условного форматирования выделить цветом минимальное значение в строке. Файл с примером прилагаю (в прикрепленном файле условное форматирование применено к странице). Подскажите, а если на странице две таблицы и в каждой необходимо выделить минимальное значение, можно ли это сделать с помощью условного форматирования? Пробовал сделать это самостоятельно, но меня постигло полнейшее фиаско. Найти ответ в интернете также не удалось. Заранее благодарен за помощь! |
|
|
26.11.2012 17:22:33
Здравствуйте.
Подскажите, возможно ли вернуть в ячейку из заданной только латинские символы и цифры? Или только кирилличные символы? Т.е. если в ячейке значение "Плитка MO1232", вернуть в ячейку значение "MO1232"? Пробовал найти ответ самостоятельно - к сожалению, нашел только проверку наличия латинских символов в ячейке. На всякий случай пример прилагаю. Заранее большое спасибо! |
|
|
01.11.2012 17:31:07
Здравствуйте!
Вопрос глупый, и возможно оффтоп, но все же интересно.. Можно ли в VBA реализовать замену данных из целого массива на заданное? Т.е.: Есть ячейки со значениями. Если значение в ячейке равно значению из массива (а в массиве 30 разных значений, которые нельзя задать одним явным условием), то значению ячейки присвоить 1. Чтобы не надо было писать 30 разных case или if и не надо было создавать таблицу на каком-нибудь листе в Excel, а все реализовать только в VBA? И если можно то как? Пример не выкладываю, поскольку вопрос пришел в голову во время написания макроса, и какого-либо практического примера у меня нет (хотя, если это необходимо, могу придумать какой-нибудь пример). Нагуглить ответ не удалось (возможно в строке поиска неправильно формулировал вопрос). Прошу прощение за столь похабное оформление темы. Заранее спасибо за ответ! |
|
|
17.10.2012 17:05:25
Да, выбрать уникальные нужно из двух зеленых столбцов.
Важное уточнение (к сожалению, забыл написать), из столбца "а" необходимо выбрать уникальные не из полных значений, а из первых 4 знаков каждого значения. По факту макрос в отдельных столбцах делает следующее: 1. Берет первые 4 знака каждого значения в столбце "а" 2. Сцепляет полученное со значением из столбца "с" 3. Выбирает уникальные 4. Разбивает полученные данные опять на 2 столбца С массивами, боюсь, не смогу реализовать... :( |
|
|
17.10.2012 16:29:13
Здравствуйте.
Помогите, пожалуйста, улучшить макрос. Появилась необходимость в выборе уникальных значений по двум столбцам (по типу, как это реализовано в сводных таблицах). Но оба этих столбца в таблице имеют разрывы. Макрос я реализовал в меру своего разумения (поскольку в VBA слабо разбираюсь, то и алгоритм решения и реализация на низком уровне), но есть две проблемы: 1. Все равно появляются задвоенные значения (эта проблема есть и в файле во вложении) 2. Не знаю, как избавиться от пустых значений. Подскажите, пожалуйста, как можно решить данные проблемы. Кроме того, подозреваю, он будет очень медленно работать на больших таблицах - может, его как-то можно оптимизировать? Заранее большое спасибо за помощь! P.S. Заранее предвидя Ваш возможный вопрос - использовать сами сводные таблицы я не могу, поскольку этот макрос - часть еще большего макроса. Хотелось бы все один раз автоматизировать и забыть... |
|
|