Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 След.
Формула ВПР с выделением диапазона, ВПР
 
NOVAK, вставляйте Вашу ВПР формулу в рядом стоящий столбец и все. А потом копируйте в нужный только те, которых нет в нем уже.
Сохранения листа в сетевую папку, только значения
 
vendigo, вот есть кучочек кода под Ваши нужды. Надеюсь, разберетесь как его адаптироваь.
Код
Source.Copy
    With Dest.Sheets(1)
        .Cells(1).PasteSpecial Paste:=8
        .Cells(1).PasteSpecial Paste:=xlPasteValues
        .Cells(1).PasteSpecial Paste:=xlPasteFormats
        .Cells(1).Select
        Application.CutCopyMode = False
    End With
Изменено: Paul Zealand - 26 Мар 2019 13:26:45
Копирование столбцов выбранных пользователем в ListBox в новую книгу
 
Kentavrik7, в общем я все равно не понимаю зачем Вам этот Бокс нужен. Если у Вас столбцы будут фиксирвоанными во всех 100 листах, то зачем их вообще выделять, когда можно их сразу определенить как переменные по имени шапки. То, что я Вам ранее предлагал. Вам лишь, остается это внутрь цикла закинуть, который будет помимо прочего перебирать файлы в папке и проделывать это с ними, вот собственно и все. Ну, в общем, сами смотрите )
Копирование столбцов выбранных пользователем в ListBox в новую книгу
 
Kentavrik7, ну смотрите, представим, что у Вас в папке 100 разных файлов. Вы запускаете макрос, который перебирает все эти 100 файлов и копирует из каждого какие-то столбцы в новый файл и сохраняет его в отдельную папку. Однако, Вы хотите, чтобы столбцы были не фиксированными, а была возможность выбрать в ЮзерФорме какие столбцы копировать. Получается, что ЮзерФорма у Вас выскочит ровно 100 раз, по количеству файлов и 100 раз спросит Вас какие столбцы в каждом из файлов копировать, и Вам надо будет 100 раз вручную указывать для каждого файла какие именно столбцы копировать. Разве нет? или как Вы видите весь процесс?
Изменено: Paul Zealand - 16 Мар 2019 07:57:47
Как с помощью VBA скопировать данные из списка поочередно в определенную ячейку
 
Юрий М, стараюсь ))
Копирование столбцов выбранных пользователем в ListBox в новую книгу
 
Kentavrik7, не думаю, что смогу помочь Вам в Вашем вопрос, ибо сам нуб. Но, просто мысли вслух. В предыдущих темах, Вы изъявляли желание, чтобы макрос сам открывал из определенной папки Н-ное количество файлов, потом копировал из каждого определенные столбцы, создавал новый файл с этими столбцами и сохранял в отдельный файл под отдельным именем в отдельную папку. А теперь, Вы зачем-то вводите ЮзерФорм, где планируете вручную указывать нужные Вам столбцы/диапозоны. В итоге, если Вы сделаете цикл под этот код, Вам в каждом файле придется вручную вписывать эти самые столбцы/диапозоны. Если файлов будет, скажем 100, а я так понял из Ваших прошлых постов их немало, то Ваша автоматизированная работа превратиться в ручной ввод 100 диапозонов, прежде, чем код закончит свою работу. Вопрос, это зачем вообще все? Или я где-то ошибся в суждении?  
Если значение подходит копируем весь столбец, МАКРОС
 
Kentavrik7, готово. Файл во вложении. В коде адрес сохранения новой книги поменяйте. Ну, и, соответственно, там диапозоны нужные Вам, имена страниц и так далее. Также, количество и имя копируемых столбцов по этой же логике можете менять как угодно. Все работает.
Изменено: Paul Zealand - 14 Мар 2019 13:20:05
Если значение подходит копируем весь столбец, МАКРОС
 
Kentavrik7, не могу открыть архив, файлов не видел. Но, могу предложить такую альтернативу.

Можете таким образом выделить по имени в шапке хоть 100 разных столбцов и скопировать их по очереди. Ну, а как через ВБА создать новый файл и вставить скопированное уже не сложно найти.
Код
A = WorksheetFunction.Match("TypeDoma", [SHEET1!a1:z1], 0)
B = WorksheetFunction.Match("TypUL", [SHEET1!a1:z1], 0)
C = WorksheetFunction.Match("LS", [SHEET1!a1:z1], 0)

Sheets("SHEET1").Columns(A).Copy
Sheets("SHEET1").Columns(B).Copy
Sheets("SHEET1").Columns(C).Copy
Изменено: Paul Zealand - 14 Мар 2019 12:20:22
Дублирование строк с изменением значения в отдельных ачейках
 
kostyaaa1976, вообще не понятно по примеру, что Вы хотите? У Вас как есть и как надо ничем не отличаются друг от друга. Идеентичные таблицы. Просто на 1 столбец меньше. Так удалите его и все. Задача не ясна.
Найти стоимость доставки для определенных моделей товаров
 
excel_lover, сделайте себе User Defined Function - VLOOKUP2, которая работает аналогично ВПР, но по 2 критериям.

Код функции внизу. Вставляете в модуль, потом в функциях UDF ищете ее. Единственный нюанс, что в отличии от ВПР диапозоны выделять надо по ячейкам, а не целиком столбец. То есть не F:F, а F1:F1000 например. В остальном все тоже самое.
Код
Function VLOOKUP2(Table1 As Range, SearchValue1 As Variant, Table2 As Range, SearchValue2 As Variant, ResultColumn As Range)
        Dim i As Integer
                                    
        For i = 1 To Table1.Rows.Count
                If Table1.Cells(i, 1) = SearchValue1 Then
                If Table2.Cells(i, 1) = SearchValue2 Then
                VLOOKUP2 = ResultColumn.Cells(i, 1)
                    Exit For
                    End If
                End If
                Next i
                  
End Function
Изменено: Paul Zealand - 6 Мар 2019 12:23:07
Журнал учета рабочего времени, Сканер, комп, эксель, и много желания
 
vikttur, название уже автор за меня придумал. Не успел )) Видимо, не подошло ничего. Нужен нормальный пример, как есть и как надо, тогда уж и гадать не нужно будет...
Журнал учета рабочего времени, Сканер, комп, эксель, и много желания
 
Sys, я, конечно, сам дилетант тот еще. Не совсем понимаю как Вы совместили скан штрихкода с Макросом на листе. Но, вот просто по модулю если код писать, то можно такой попробовать, может Вам это поможет догадаться как это реализовать в Вашем случае.
Код
Sub test()

x1 = 2
x2 = 3
x3 = 4
x4 = 5
x5 = 6
x6 = 7

Set y1 = Range("A" & x1)
Set y2 = Range("A" & x2)
Set y3 = Range("A" & x3)
Set y4 = Range("A" & x4)
Set y5 = Range("A" & x5)
Set y6 = Range("A" & x6)

y1.Offset(0, 6).Formula = "=NOW()"
y2.Offset(0, 6).Formula = "=NOW()"
y3.Offset(0, 6).Formula = "=NOW()"
y4.Offset(0, 6).Formula = "=NOW()"
y5.Offset(0, 6).Formula = "=NOW()"
y6.Offset(0, 6).Formula = "=NOW()"

End Sub
Изменено: Paul Zealand - 6 Мар 2019 08:49:43
Журнал учета рабочего времени, Сканер, комп, эксель, и много желания
 
В пердложенном Выше варианте, всегда в последнюю строку будет вписываться время. Я так понимаю у Вас же ограниченный и фиксированный штат сотрудников, можно объявить каждого по коду в качестве переменной. И в зависимости от штрихкода при сканированнии, чтобы он оффсетил от нужной переменной. А в целом логика та же.
Журнал учета рабочего времени, Сканер, комп, эксель, и много желания
 
Sys, ну вот так примерно. Только это я уже в модуль впихнул.
Код
Sub test()

Dim x As Range
Set x = Range("A" & Rows.Count).End(xlUp)
x.Offset(0, 6).Formula = "=NOW()"

End Sub
Изменено: Paul Zealand - 6 Мар 2019 08:09:11
Журнал учета рабочего времени, Сканер, комп, эксель, и много желания
 
Sys, тогда объявите последнюю ячейку в столбце А в качестве переменной, и при сканировании оффсеттьте от переменной на 6 столбцов и вставляейся текущее время - now.  
Журнал учета рабочего времени, Сканер, комп, эксель, и много желания
 
Sys, вот таким образом. Понятно, что сейчас он тоже время указывает, ну это Вы уже у себя дородите как Вы дату ухода там по штрихкодам извлекаете.
Код
1  Private Sub Worksheet_Change(ByVal Target As Range)
2    
3    For Each cell In Target
4       If Not Intersect(cell, Range("A:A")) Is Nothing Then
5            With cell.Offset(0, 5)
6               .Value = Now
7               .EntireColumn.AutoFit
8            With cell.Offset(0, 6)
9               .Value = Now
10               .EntireColumn.AutoFit
11            End With
12            End With
13       End If
14    Next cell
15 End Sub
Изменено: Paul Zealand - 6 Мар 2019 07:20:18
Журнал учета рабочего времени, Сканер, комп, эксель, и много желания
 
Sys, почему Вы просто не поместите даты Прихода и Ухода в разные столбцы? F1 - приход, G1 - уход. А в коде добавьте цикл на уход, ровно такой же как и на приход, только оффсет на 1 столбец подальше и все.
Выделение только видимых ячеек VBA
 
andronus, в Вашем файле такой код работает.
Код
1 Dim x, y As Range
2 Set x = Range("A1").End(xlDown)
3 Set y = x.Offset(-1, 2)
4 Set Z = y.Offset(1, 0)
5 Z.Select
6
7 Range(y, Z).Select
Изменено: Paul Zealand - 28 Фев 2019 09:43:21
Выделение только видимых ячеек VBA
 
andronus, не понимаю чего Вы мучаетесь, найти первую видимую ячейку после фильтра не составляет большого труда. Дальше если Вам нужно использовать формулу в этих ячейках, то просто объявите переменную. У меня идеентичная необходимость была на днях. Решил подобным примитивным способом.
Код
1 Dim x As Range
2 Set x = Range("A5").End(xlDown) 'в 5 строке у меня автофильтр. x в итоге всегда будет первой ячейкой когда активен фильтр
3
4 Range("A5").End(xlDown).Select 'встаешь на любой столбец, где есть автофильтр. Опускаешься на первую ячейку после фильтра
5 ActiveCell.Offset(0, 5).Select 'дальше оффсетишь куда тебе надо  
6 ActiveCell.Formula = "=VLOOKUP(" & x.Address & ",'SHEET2'!$A:$BM,19,0)" 'если в формуле надо использовать просто сделай ее переменной
7 End If
Изменено: Paul Zealand - 28 Фев 2019 09:31:27
Подставить к продаже номер договора при условии, что у клиента может быть несколько договоров в списке
 
Сделайте себе пользовательскую функцию VLOOPUP2 по 2 критериям.

Код ниже.
Код
1 Function VLOOKUP2(Table1 As Range, SearchValue1 As Variant, Table2 As Range, SearchValue2 As Variant, ResultColumn As Range)
2        Dim i As Integer
3                                    
4        For i = 1 To Table1.Rows.Count
5                If Table1.Cells(i, 1) = SearchValue1 Then
6                If Table2.Cells(i, 1) = SearchValue2 Then
7                VLOOKUP2 = ResultColumn.Cells(i, 1)
8                    Exit For
9                    End If
10                End If
11                Next i                  
12 End Function
Изменено: Paul Zealand - 22 Фев 2019 13:44:11
Выделение только видимых ячеек VBA
 
Код
   1 ActiveSheet.AutoFilter.Range.Offset(1, 2).SpecialCells(xlCellTypeVisible).Select
   2 Selection.Resize(2, 1).Select
такой еще чутка кривовато-страноватый способ. Ну, мало ли. Вдруг подойдет.
Изменено: Paul Zealand - 22 Фев 2019 06:07:01
Выделить ячейку следующую после последней заполненной ячейки в определенной строке через VBA
 
SAS888, спасибо добрый человек! То, что нужно!
Выделить ячейку следующую после последней заполненной ячейки в определенной строке через VBA
 
Друзья, нужен Ваш добрый совет!

Вопрос примитивный. Есть таблица. У таблицы есть шапка. Шапка всегда во второй строке. Незаполненных ячеек в шапке нет. Количество же столбцов может варьироваться. Нужно выделить ячейку следующую после последней заполненной ячейки в шапке. То есть в файле-примере надо выделить ячейку O2.

Поиском по формуму тоже пользовался. Все вокруг, да около, а нужного примера, к сожалению не нашел.

Пробовал некие варианты, не подошли.
Код
With ActiveCell.EntireRow
  .Cells(.Cells.Count).End(xlUp).Activate
End With

Cells(2, Columns.Count).End(xlToRight).Select

Range(Cells(2, Columns.Count + 1)).Select

Range("A2" & Cells(Columns.Count, 1).End(xlRight).Row + 1).Select
Заранее спасибо.
Подсчет ячеек без учета ячеек с пустотой в виде текста
 
Ну, например, такой вариант.
Подтянуть данные формулой SUMIFS из другой книги через ВБА
 
RAN, перед созданием темы, конечно, же пользовался поиском. Много разной инфы на схожую тему нашел, но именно моей ситуации не обнаружил, или предложенные решения не подошли. Одну тему нашел, но ТС так и не выложил финальное решение. А про ВПР там всего-то ссылка на мейл нужна, чтоб атоматом письма рассылать, сотую доли секунды работает макрос, так что меня вполне устраивает. В любом случае спасибо Вам за советы. В итоге решил задачу открытием книги в фоне и последующем закрытии после замены формулы на значения. Если кому интересно решение ниже.
Код
Dim wb As Workbook
Set wb = Workbooks.Open("X:\TEST.xlsx")
wb.Windows(1).Visible = False

Do what you need then

Workbooks("TEST.xlsx").Close SaveChanges:=False
Изменено: Paul Zealand - 5 Янв 2019 11:46:53
Суммирование данных закрытой книги
 
cuprum, выложите пожалуйста.
Подтянуть данные формулой SUMIFS из другой книги через ВБА
 
Cratas.Thymos, чисто теоретически думал об этом, мол открыть книгу, потом в основной книге после того как значения подтянуться заменить их на значения, а потом уже можно и закрыть ее. А как в коде это сделать? ну в смысле открыть книгу в фоне, а потому закрыть, не подскажите?

З.Ы. хотя все равно не иделаьный вариант. Все таки мне просто любопытно почему 1 функция работает нормально, а другая нет? в чем суть?
Подтянуть данные формулой SUMIFS из другой книги через ВБА
 
RAN, а как можно вручную прописать SUMIFS функцию, не открывая, при этом книгу на которую ссылаешься? Мое главное условие не открывать книгу. Соответственно, без макроса прописанная формула работает, т.к. ты в любом случае открываешь книгу на которую ссылаешься. Мне же нужен вариант, чтобы не трогать эту бедную книгу, поэтому и вношу формулу через Макрос, ну одна из причин.  
Изменено: Paul Zealand - 5 Янв 2019 11:03:24
Макрос для очистки определенного диапазона листов
 
Попробуйте этот код. Очищает все листы, кроме указанных Вами.

Код
Application.DisplayAlerts = False        
  
x = Array("SVODANAYA", "NOMER ZAK")       
  For Each s In Sheets        
   Z = True        
    For i = LBound(x) To UBound(x)            
    If s.Name = x(i) Then Z = False        
  Next i        
If Z Then s.Cells.Clear    

Application.DisplayAlerts = True

Если нужно очистить сохраняя форматирование можете команду Clear поменять на ClearContents. Пример во вложении.
Изменено: Paul Zealand - 5 Янв 2019 10:22:08
Подтянуть данные формулой SUMIFS из другой книги через ВБА
 
Здравствуйте, друзья!

Подскажите, пожалуйста!

Я через ВБА макросом вношу простую формулу в ячейку. Но, формула ссылается на другую закрытую книгу. Открывать ее желания нет совсем.
В одном файле когда через ВБА вношу формулу ВПР в ячейку, также ссылаясь на закрытую книгу - без всяких проблем получаю нужный результат.
Однако, в другом файле использую SUMIFS по той же логике, и вместо данные получаю #VALUE!. Только если открыть книгу, тогда появляются данные.
Не могу почему ВПР не требует открытия книги для отражения данных, а SUMIFS требует. Что делаю не так?

Код
Range("E2").Formula = "=IFERROR(VLOOKUP(D2,'X:\[EXAMPLE1.xlsx]Sheet1'!$A$1:$B$1000,2,0),""xxx"")"   -   работает
 Range("J3").Formula = "=SUMIFS('X:\[EXAMPLE2.xlsx]MAIN'!$D:$D,'X:\[EXAMPLE2.xlsx]MAIN'!$A:$A,F3,'X:\[EXAMPLE2.xlsx]MAIN'!$C:$C,"">=""&C3,'X:\[EXAMPLE2.xlsx]MAIN'!$B:$B,""<=""&C3)"    -    не работает

Заранее всем спасибо!

Страницы: 1 2 3 След.
Наверх