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

Страницы: 1
Сравнение двух столбцов в разных книгах и добавление значений в первую книгу, не работает макрос
 
Добрый день!

Помогите, пожалуйста, разобраться почему не работает макрос и как исправить код. Я хочу сравнить столбец 3 из книги "Sample" со столбцом 2 из книги "Report", и если в Sample нет каких-то значений, добавить их туда. Примеры файлов во вложении.

Я уже и гуглил, и яндил...скачал кучу подобных макросов и попробовал оптимизировать под себя...сначала с созданием библиотек, потом с созданием массивов - ничего не работает. Перешел уже на простейший вариант с перебором, но и он работать не хочет. Я в отчаяньи.

Заранее большое спасибо!
Изменено: Александръ - 18.01.2016 17:15:59
Найти дубликаты в столбце и добавить цифры в конце значений дубликатов, начиная со второго
 
Добрый день!

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

Например:
Артикул   (как есть)Артикул (как должно быть)
1101811018
1102011020
1102011020(1)
1102011020(2)
1102011020(3)
1102211022
1102211022(1)
1102211022(2)
Также пример во вложении.
Я написал макрос, но он не работает. Помогите, пожалуйста, понять почему и, возможно, как-то оптимизировать его (понимаю, что перебор - не самый оптимальный путь).
Код
Sub Test()
Dim n As Integer, k As Integer, m As Integer
Dim lLastRow As Long

lLastRow = Cells(Rows.Count, 1).End(xlUp).Row    
m = 1

For k = lLastRow To 1
    If Cells(k, 1).Value = Cells((k - 1), 1).Value Then
        Cells(k, 1).Value = CStr(Cells(k, 1).Value) & "(" & m & ")"
        m = m + 1
        k = k - 1
    Else
    m = 1
    k = k - 1
    End If
Next k
End Sub

Заранее спасибо!
Ошибка в макросе добавляющем в столбец отсутствующие значения
 
Добрый вечер!

Уважаемые форумчане,
сразу хочу попросить прощение за отсутствие примера - выкладываю только часть макроса, сам макрос довольно большой и неоптимальный. Если пример необходим - напишите, пожалуйста, создам отдельный файл.

Часть большего макроса - это макрос, приведенный ниже.
Он должен сравнивать список, размещенный на листе, который я назвал "BazaSht" с несмежным массивом данных - range("D10:P33"  ;)  . И если в массиве есть значение длиной больше 5 символов, которого нет в списке - добавлять его в список снизу.
Но он выдает ошибку "Compile error: End If without block If" в строке, на которую указывает стрелка. Подскажите, пожалуйста почему и как это исправить. Сам испробовал уже различные варианты - ничего не помогает...
Код
             Set rRange = Worksheets("TDSheet".Range("D10:P33"
             
             With BazaSht

                iLastRow = Range("A7".SpecialCells(xlLastCell).Row
                n = iLastRow + 1
                
                For Each aCell In Range("A7", Cells(Rows.Count, 1).End(xlUp))
                    For Each rCell In rRange
                        If Len(rCell.Value) > 5 Then
                           If rCell.Value = aCell.Value Then GoTo aNext
                           Else
                                   BazaSht.Cells(n, 1).Value = rCell.Value
                                   n = n + 1
                           End If
 ---->                End If
                   Next rCell
aNext:
                Next aCell

             End With
Заранее большое спасибо!
Сбор данных из разных файлов в один (VBA), Поиск данных по условию из таблиц, размещенных в разных файлах и их консолидация в одну таблицу
 
Добрый день!

Помогите, пожалуйста, написать макрос, который собирал бы данные из разных файлов (файлов несколько десятков) и консолидировал в один.
Для примера приложил два файлика - нужно из файлика 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 загнать в массив, и потом использовать его - но ранее пробовал писать что-то только с одномерными массивами, и потому не знаю, как обращаться с двумерными...та же история с коллекциями...понимаю, что даже если этот вариант заработает, то он будет не оптимальным. Может, подскажете, как его написать изаначально более оптимальным? Что лучше использовать?

Заранее очень благодарен!
Изменено: Александръ - 01.03.2013 13:28:16
Выделение цветом минимального значения в строке, условное форматирование.
 
Добрый день!
Нашел в интернете как можно с помощью условного форматирования выделить цветом минимальное значение в строке. Файл с примером прилагаю (в прикрепленном файле условное форматирование применено к странице).

Подскажите, а если на странице две таблицы и в каждой необходимо выделить минимальное значение, можно ли это сделать с помощью условного форматирования?
Пробовал сделать это самостоятельно, но меня постигло полнейшее фиаско. Найти ответ в интернете также не удалось.
Заранее благодарен за помощь!
Выбор из данных в ячейке только кириллицы/латиницы.
 
Здравствуйте.  
 
Подскажите, возможно ли вернуть в ячейку из заданной только латинские символы и цифры? Или только кирилличные символы?  
Т.е. если в ячейке значение "Плитка MO1232", вернуть в ячейку значение "MO1232"?  
 
Пробовал найти ответ самостоятельно - к сожалению, нашел только проверку наличия латинских символов в ячейке.  
 
На всякий случай пример прилагаю.  
 
Заранее большое спасибо!
VBA. Замена данных из массива на заданное.
 
Здравствуйте!  
 
Вопрос глупый, и возможно оффтоп, но все же интересно..  
 
Можно ли в VBA реализовать замену данных из целого массива на заданное?  
Т.е.: Есть ячейки со значениями. Если значение в ячейке равно значению из массива (а в массиве 30 разных значений, которые нельзя задать одним явным условием), то значению ячейки присвоить 1.    
Чтобы не надо было писать 30 разных case или if и не надо было создавать таблицу на каком-нибудь листе в Excel, а все реализовать только в VBA? И если можно то как?  
 
Пример не выкладываю, поскольку вопрос пришел в голову во время написания макроса, и какого-либо практического примера у меня нет (хотя, если это необходимо, могу придумать какой-нибудь пример).  
 
Нагуглить ответ не удалось (возможно в строке поиска неправильно формулировал вопрос).  
 
Прошу прощение за столь похабное оформление темы.  
Заранее спасибо за ответ!
VBA. Выбор уникальных значений в двух столбцах.
 
Здравствуйте.  
 
Помогите, пожалуйста, улучшить макрос.  
Появилась необходимость в выборе уникальных значений по двум столбцам (по типу, как это реализовано в сводных таблицах). Но оба этих столбца в таблице имеют разрывы.  
 
Макрос я реализовал в меру своего разумения (поскольку в VBA слабо разбираюсь, то и алгоритм решения и реализация на низком уровне), но есть две проблемы:    
1. Все равно появляются задвоенные значения (эта проблема есть и в файле во вложении)  
2. Не знаю, как избавиться от пустых значений.  
 
Подскажите, пожалуйста, как можно решить данные проблемы.  
Кроме того, подозреваю, он будет очень медленно работать на больших таблицах - может, его как-то можно оптимизировать?  
 
Заранее большое спасибо за помощь!  
 
P.S. Заранее предвидя Ваш возможный вопрос - использовать сами сводные таблицы я не могу, поскольку этот макрос - часть еще большего макроса. Хотелось бы все один раз автоматизировать и забыть...
Макрос, собирающий данные из разных файлов .xlsx в папке по условию
 
Здравствуйте!  
 
Крайне необходимо написать макрос, собирающий данные из разных файлов в папке по условию.  
Нашел в интернете нечто похожее и попытался переделать под свой файл, но поскольку я в программировании разбираюсь крайне мало, видимо написал что-то не так и макрос работать не хочет.  
 
Сам макрос должен делать следующее:  
Есть папка с множеством файлов, названных кое-как. В этой же папке находится файл с итоговой таблицей. Макрос по очереди открывает все файлы .xlsx, ищет ячейку с кодом сотрудника, и по коду подтягивает в итоговую таблицу две цифры.  
 
Огромная просьба помочь разобраться почему макрос не работает.  
 
Пример итогового файла и двух файлов, с которых тянутся данные, прилагаю.    
 
Заранее огромное спасибо!
Удаление символа, стоящего в ячейке после буквенного значения
 
Здравствуйте.  
 
Помогите, пожалуйста, с проблемой. Нужен макрос, который удаляет символ, если он стоит после буквенного значения.  
Есть таблица, в которой один из столбцов имеет значения типа "Полиуретан% 100%".  В данном столбце необходимо убрать символ "%", который стоит после слова "Полиуретан". С разными видами таких таблиц сталкиваюсь каждый день, и макрос, который убирает эти символы очень помог бы.  
 
Пример таблицы прилагаю.  
 
Заранее очень благодарен!
Формирования "фильтра" (вставка символа между данными из ячеек)
 
Здравствуйте!  
 
Написал макрос, который формирует "фильтр". Данный макрос вставляет символ "|" между данными ячеек и получившиеся данные копирует в буфер памяти.  
Пример прилагаю.  
 
Но возникла проблема - он не работает, когда количество ячеек (значений) - 2.  
 
Кроме того, возможно можно его как-небудь оптимизировать.  
 
Помогите, пожалуйста.  
 
Заранее спасибо!
offtop. Сборник задач по VBA
 
Здравствуйте.  
 
Возможно, кто-небудь когда-небудь встречал кроме самоучителей по VBA и т.д. какой-небудь сборник задач по VBA?    
 
Интересует не самоучитель, в конце главы которого приведено пару задач для практического ознакомления с пройденным материалом, а книга с кучей типовых интересных задач, чтобы помимо ознакомления с теорией можно было параллельно решать практические задачи?  
 
Если да - просьба поделится (книгой, либо хотя бы информацией - названием книги, автором и т.д.)  
 
Заранее спасибо за ответ.
Скрытие строк по условию
 
Здравствуйте.  
 
Есть вопрос по макросу. Во вложении файл с двумя страницами - на странице "Data" находятся некие данные, на странице "Check" в столбце А - искомые данные. Макрос скрывает строки на странице "Data", данные в которых не равны искомым данным с страницы "Check".    
 
Но есть одна проблема - он работает только когда в искомых данных больше одного значения. В случае, когда там лишь одно значение он не работает. Помогите понять где ошибка и как ее исправить. Заранее большое спасибо!  
 
Макрос:  
 
Option Explicit  
 
Sub Checking()  
 
Dim i As Integer, n As Integer  
Dim v1 As Variant, v2 As Variant  
Dim s As Long, t As Long  
 
s = ActiveWorkbook.Sheets("Data").Cells(1, 3).End(xlDown).Row  
t = ActiveWorkbook.Sheets("Check").Cells(1, 1).End(xlDown).Row  
 
ActiveWorkbook.Sheets("Data").Rows(2 & ":" & s).Hidden = True  
 
v1 = Range(ActiveWorkbook.Sheets("Data").Cells(2, 3), ActiveWorkbook.Sheets("Data").Cells(s, 3)).Value  
v2 = Range(ActiveWorkbook.Sheets("Check").Cells(1, 1), ActiveWorkbook.Sheets("Check").Cells(t, 1)).Value  
 
For n = LBound(v1) To UBound(v1)  
For i = LBound(v2) To UBound(v2)  
If v1(n, 1) = v2(i, 1) Then  
 
ActiveWorkbook.Sheets("Data").Rows(n).Hidden = False  
 
End If  
 
Next i  
Next n  
 
ActiveWorkbook.Sheets("Data").Select  
 
End Sub
Макрос, разделяющий данные в ячейке
 
Здравствуйте.  
 
Помогите, пожалуйста, с макросом: есть макрос, который «раскидывает» данные из одной ячейки  по разным ячейкам на другой вкладке:  
 
Option Explicit  
 
Sub SizeQty()  
Dim arr() As String  
Dim r, j  
arr = Split(WorksheetFunction.Trim(ActiveCell), " ")  
Sheets.Add after:=Sheets(Sheets.Count)  
Sheets(Sheets.Count).Name = "Result"  
r = 2  
For j = LBound(arr) To UBound(arr)  
If InStr(1, arr(j), "/") <> 0 Then  
Sheets("Result").Cells(r, 1) = Left(arr(j), InStr(1, arr(j), "/") - 1)  
Sheets("Result").Cells(r, 2) = Right(arr(j), Len(arr(j)) - InStr(1, arr(j), "/"))  
Else  
Cells(r, 1) = arr(j)  
End If  
r = r + 1  
Next j  
End Sub  
 
Пример с тем как информация выглядит в первоначальном виде, и как ее раскидывает макрос прикладываю.  
Но макрос работает только с одной выделенной ячейкой. Если выделить к примеру две ячейки – он не работает.  
Помогите доработать макрос, чтобы он мог работать с выделенным диапазоном ячеек.  
 
Заранее благодарен.
VBA. Текстовый формат ячеек.
 
Здравствуйте.  
 
Возможно кто-небудь подскажет, как на VBA можно написать процедуру, которая проверяет формат ячеек заданного диапазона. Если формат ячеек текстовый - ничего не делать, если не текстовый -  присвоить ячейкам текстовый формат. Искал в интернете материал по заданной теме - ничего подходящего не обнаружил...
Выбрать в свобной ненулевые значения
 
Здравствуйте.  
 
Есть небольшой вопрос (возможно глупый, но самостоятельно его не осилил). Есть таблица с тремя столбцами: в первом столбце уникальный код, в двух других даты. Я добавил еще два столбца (в примере – с заголовками х и у), в которых вычисляю разницу между сегодняшним днем и указанными датами. На основании этой таблицы необходимо сделать отчет, в котором бы выводились все коды и значение из столбцов х и у, если значение ненулевое.  
 
В принципе это можно сделать с помощью сводной таблицы, выбрав в качестве аргумента не количество значений, а максимальное значение (все коды уникальные, поэтому это будет правильное значение), но можно ли сделать так, чтобы в сводной таблице отображались только ненулевые значения?
Замена значений в одном столбце значениями из другого
 
Здравствуйте.  
 
Помогите пожалуйста подправить макрос.  
На одном листе книги есть столбец А, на другом - столбцы В и С. Нужно сделать следующее: при совпадении значений в столбце А и столбце В, значения из столбца А макрос заменял значением из столбца С. Пример на всякий случай выложил.  
 
Макрос:  
 
Option Explicit  
 
Sub ReStarT()  
 
'Dim rRange As Range  
'Dim rCell As Range  
 
Dim i As Integer  
Dim j As Integer  
Dim kon1 As Long, kon2 As Long, kon3 As Long  
Dim coly As Long, colx As Variant, colz As Long  
 
ActiveWorkbook.Sheets("Sheet1").Select  
For coly = 1 To Cells(1, Columns.Count).End(xlToLeft).Column  
If Cells(1, coly) = "Apple Barcode" Then  
kon1 = Cells(1, coly).End(xlDown).Row  
 
ActiveWorkbook.Sheets("Data").Select  
For colx = 1 To Cells(1, Columns.Count).End(xlToLeft).Column  
If Cells(1, colx) = "Apple Code" Then  
kon2 = Worksheets("Data").Columns(colx).Find(What:="").Row  
 
ActiveWorkbook.Sheets("Data").Select  
For colz = 1 To Cells(1, Columns.Count).End(xlToLeft).Column  
If Cells(1, colz) = "Price" Then  
kon3 = Worksheets("Data").Columns(colz).Find(What:="").Row  
 
For i = 1 To kon1  
For j = 1 To kon2  
If Sheets("Sheet1").Cells(j, coly) = Sheets("Data").Cells(i, colx) Then Sheets("Sheet1").Cells(i, coly) _  
= Sheets("Data").Cells(j, colz)  
 
Next j  
Next i  
 
 
End If  
Next  
     
End If  
Next  
 
End If  
Next  
 
End Sub
Выравнивание числовых значений в столбце
 
Здравствуйте! Помогите написать макрос для следующего случая:  
 
Есть два столбца с двумя показателями (см. пример). Разница между двумя показателями не должна превышать 20%. Если есть превышение 20 % порога – нужно от второго показателя в текущей строке отнять превышение и прибавить его ко второму показателю в строке, где превышения нет.    
 
Т.е. к примеру: отнять превышение 20% порога в ячейке В11 и прибавить к ячейке В9, но при этом общая сумма (ячейка В14) меняться не должна.  
 
Заранее спасибо!
Страницы: 1
Наверх