Этот код писали всем форумом (если память не изменяет) Код клёвый - быстро работает, берет два значения из таблицы и проставляет их в другую соответственно. Но сейчас мне нужно чтобы одно значение брал, а как подправить ВООБЩЕ не могу сообразить. Вроде в разных местах посмотрел, почитал форумы, но мне всё равно не понятно что ниже написано. Большая просьба откорректировать для подстановки одного значения. И если кто в курсе, где можно прочитать хороший материал по Коллекции буду примногоблагодарен за ссылку.
With Wb_NED.ActiveSheet x_ll = .Range("A1:B" & .Cells(Rows.Count, 1).End(xlUp).Row).Value End With With ThisWorkbook.Sheets(1) y_ll = .Range("B1:B" & .Cells(Rows.Count, 2).End(xlUp).Row).Value End With ReDim z_ll(1 To UBound(y_ll), 1 To 2) With New Collection On Error Resume Next For i_ll = 1 To UBound(x_ll, 1) .Add Item:=x_ll(i_ll, 2), Key:=CStr(x_ll(i_ll, 1)) Next i_ll For i_ll = 1 To UBound(y_ll, 1) If Not Trim(y_ll(i_ll, 1)) = "" Then k_ll = CStr(y_ll(i_ll, 1)): Err.Clear .Add Item:=0, Key:=k_ll If Err <> 0 Then z_ll(i_ll, 2) = .Item(k_ll) End If End If Next i_ll End With ThisWorkbook.Sheets(1).Cells(1, 26).Resize(UBound(y_ll, 1), 2).Value = z_ll Application.Calculation = xlCalculationManual Wb_NED.Close SaveChanges:=False
столбец по которому нужно произвести данную выборку. Если этот процесс трудоемкий, то прошу об этом сказать. Я буду делать сортировку в соседнем столбце, "маркеровать"
Вроде бы выделил область, а чему формула не вставляется не пойму и тоже самое с выделением колонок. Я понимаю, что код не работает из-за неправильного выделение, но как выделить правильно в этих двух вариантах не знаю. Будьте добры помочь. (Если информации недостаточно, то скажите)
Здравствуйте! Каким образом можно найти 10 максимальных значений в списке без сортировки? Подскажи пожалуйста, а то я чет не могу сообразить. Заранее спасибо за любые идеи.
да ведь я и не просил готового кода с бантиком (зная правила), я спросил хотя бы идеи. Саму реализацию, поняв смысл, я бы мог исполнить и сам. // Прист, подобный код я видел ранее (но всё равно спасибо), но на другом сайте http://excelvba.ru/code/CDO (согласно правилам первоначально "погуглил") Чем больше информации, тем легче разобраться в "механике", выбрать лучший вариант. // Как ещё одно применение данного кода - рассылка файлов по адресам, что значительно облегчит мою жизнь на работе, т.к. за день порядка 50 эл. писем и более, приходиться отправлять со всякими "нарезками" и прочими xls файлами. Ранее я думал об проге автомате - знаешь наверное такие?!
{quote}{login=vikttur}{date=03.06.2011 11:58}{thema=}{post}Обычно здесь с такими "хотелками" не помогают. Очень похоже на желание "стырить" документ. Я не утверждаю, что у Вас именно такое направление мыслей, но будет лучше, если более развернуто объясните выражение "скрыто отправить по почте".{/post}{/quote} да здесь вообще мне только 3-4 человека помогают, - за что им огромное спасибо, - тем самым обучают меня. Чего рассказывать о коде который будет записывать действия пользователя? Тему можно закрыть/удалить, коли такое не в правилах, - можно обойтись другими прогами.
Добрый ночи, Уважаемые! Прошу вашей помощи, чтобы скрыто отправить файл "Отчет о проделанной работе" по почте. Какие есть варианты кроме "application.ScreenUpdating = False, application .Visible = False, application.DisplayAlerts = False"? Буду благодарен за любые идеи и реализации.
{quote}{login=Hugo}{date=05.05.2011 09:08}{thema=}{post}Это уже ближе. Но ведь если For Each sh In wb.Worksheets то в sh уже есть ссылка на лист, и Set sh = wb.Sheets(a(i)) совершенно лишнее, и даже вероятно только мешает. Или одно, или другое.{/post}{/quote} Да я тоже об этом думал, но просто макрос не работал, вот я и подумал, что может нужно задать. Спасибо, Hugo!
{quote}{login=Hugo}{date=05.05.2011 06:21}{thema=}{post}Ну значит недопробовали:) Только я в Вашем примере нигде не видел, где эта sh определяется...{/post}{/quote} Сообщение от 05.05.2011, 17:28 в середине указывается.
{quote}{login=Hugo}{date=05.05.2011 06:11}{thema=}{post}Так именно в этой строке ссылки на лист нет. Если бы было типа так: sh.Range(sh.Cells(RowFind_l, 4), sh.Cells(lastrow, 4)).Select вот это было бы "так и делал". Но тогда селект уже не нужен, разве что как финальное действие - показать юзеру результат.{/post}{/quote} Пробовал: Range(sh.Cells(RowFind_l, 4), sh.Cells(lastrow, 4)).Select и sh.Range(Cells(RowFind_l, 4), Cells(lastrow, 4)).Select // Пойду проверять.
{quote}{login=Johny}{date=05.05.2011 05:39}{thema=Re: Re: }{post}{quote}{login=russia}{date=05.05.2011 05:32}{thema=Re: }{post} Блин. Хорошо. Как сделать активным этот лист? А потом другой лист из другой книги (ThisWorkbook)?{/post}{/quote} Зачем активировать листы? Запиши нужные листы в переменные - и обращайся к ним.{/post}{/quote} Так и делал! Стопорится на том моменте что указал в теме.
{quote}{login=ikki}{date=05.05.2011 05:29}{thema=}{post}имхо, здесь имеем довольно дикую смесь результатов работы макрорекодера и каких-то (не очень понятных) попыток их доработки. много мусора - те же ActiveWindow.FreezePanes = True, .Rows("1:4").Select и др.
возможно, проще озвучить саму задачу?{/post}{/quote}
Задача. Мне необходимо создать Новую книгу для помещения туда результатов, переключиться на неё и заполнить в ней Шапку(действие1). Далее переключиться в книгу "This" и выполнить действие2. Результаты действия 2 занести в новую книгу.
{quote}{login=The_Prist}{date=05.05.2011 05:25}{thema=}{post}Вот эта строка: ActiveWindow.FreezePanes = True
будет работать только с активным листом. Так что если нужно закрепление областей, то активировать лист все равно придется. Но самое интересное, что вы спрашиваете про строку Windows("Лист1").Activate, которая напрочь отсутствует в коде.{/post}{/quote}
Блин. Хорошо. Как сделать активным этот лист? А потом другой лист из другой книги (ThisWorkbook)?
{quote}{login=Johny}{date=05.05.2011 05:06}{thema=Re: VBA Как переключать окна/книги?}{post}Я дико извиняюсь, но можно ли узнать, что вообще этот код делает? И очень непонятно вот это: Set wb = ThisWorkbook. И где эта "wb" используется?{/post}{/quote} Извиняюсь пару строчек забыл захватить. Я писал. И вся используется. И хотелось бы что бы когда я писал sh.select - становилась активной книга ThisWorkbook, а не получается - не переключается на окно этой книги, остается в новой книге и выдает ошибку. lastrow = sh.Cells(8, 5).End(xlDown).Row - это мои опыты, чтобы производил операции с листом sh (книге где находиться макрос). Работает. Но если задавать sh.cells(...)... - то выдает ошибку на подобии вышеописанного.
Set wb = ThisWorkbook Sheets(a).Select Sheets(a(i)).Columns("E:F").Cut Columns("A:A").Select Selection.Insert Shift:=xlToRight Set nb = Workbooks.Add Set ws = nb.Sheets(1) With ws .Select .Name = "Результат" .Rows("1:4").Select ActiveWindow.FreezePanes = True End With
For Each sh In wb.Worksheets Set sh = wb.Sheets(a(i)) lastrow = sh.Cells(8, 5).End(xlDown).Row k = 4 'заполнение под "шапкой" For RowFind_ll = 8 To lastrow ' цикл по ТП RowFind_l = RowFind_ll n = 1 'порядковый номер Range(Cells(RowFind_l, 4), Cells(lastrow, 4)).Select ' ---> Здесь почему то стопорится из-за того что не переключается на другую книгу. Подскажите пжл, как исправить. Selection.Find(What:="", After:=ActiveCell, LookAt:=xlPart).Select RowFind_ll = Selection.Row next RowFind_ll next sh
Добрый вечер! Задаю листы. Set wb = ThisWorkbook Sheets(a).Select Sheets(a(i)).Columns("E:F").Cut Columns("A:A").Select Selection.Insert Shift:=xlToRight Set nb = Workbooks.Add Set ws = nb.Sheets(1) With ws .Select .Name = "Результат" .Rows("1:4").Select ActiveWindow.FreezePanes = True End With lastrow = sh.Cells(8, 5).End(xlDown).Row k = 4 'заполнение под "шапкой" For RowFind_ll = 8 To lastrow ' цикл по ТП RowFind_l = RowFind_ll n = 1 'порядковый номер Range(Cells(RowFind_l, 4), Cells(lastrow, 4)).Select ' ---> Здесь почему то стопорится из-за того что не переключается на другую книгу. Подскажите пжл, как исправить. Selection.Find(What:="", After:=ActiveCell, LookAt:=xlPart).Select RowFind_ll = Selection.Row next RowFind_ll
// Пробовал указывать перед этой строчкой sh.select - тоже не переключается Windows("Лист1").Activate - Можно как-нибудь обойтись без этой строчки, т.к. надо будет вытаскивать имя книг и т.п. Мне казалось что это проще делает.
{quote}{login=Юрий М}{date=02.05.2011 03:36}{thema=}{post}Если необходимо проверить, что каждое следующее значение в диапазоне больше предыдущего ровно на единицу, то я вижу решение с циклом. Т.е. перебор.{/post}{/quote} Спасибо... (этот вариант я знал)
Слушай, Z, так он только первое проверит. Например первая строчка будет - 1 вторая - 3 ... и по твоей догадке будет истина, а порядок не будет соблюден.
Здравствуйте! Подскажите пожалуйста, есть ли вариант более проще, чем перебор и проверка на соответствие порядку "1,2,3,..."? (количество значений не постоянное)