Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Коприрование данных по ключевому слову - Страница 2 - Мир MS Excel

  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_, DrMini  
Коприрование данных по ключевому слову
Hugo Дата: Четверг, 10.07.2014, 16:03 | Сообщение № 21
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3859
Репутация: 819 ±
Замечаний: 0% ±

365
И почему же пустой фаил собираюсь фильтровать?

Потому что у Вас код (и кнопка к нему) в пустом файле "Поставщики", и первой строкой кода написано Set wb1 = ActiveWorkbook


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
Сообщение
И почему же пустой фаил собираюсь фильтровать?

Потому что у Вас код (и кнопка к нему) в пустом файле "Поставщики", и первой строкой кода написано Set wb1 = ActiveWorkbook

Автор - Hugo
Дата добавления - 10.07.2014 в 16:03
Xaden Дата: Четверг, 10.07.2014, 17:38 | Сообщение № 22
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Спасибо всем за ответы, постараюсь догнать о чем RAN и Hugo выше написали, я понимаю что в этом проблема Set wb1 = ActiveWorkbook, пробовал без Active указывать все равно не хочет работать.
 
Ответить
СообщениеСпасибо всем за ответы, постараюсь догнать о чем RAN и Hugo выше написали, я понимаю что в этом проблема Set wb1 = ActiveWorkbook, пробовал без Active указывать все равно не хочет работать.

Автор - Xaden
Дата добавления - 10.07.2014 в 17:38
Xaden Дата: Четверг, 10.07.2014, 18:00 | Сообщение № 23
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
нашел выход из ситуации, еще раз всем спасибо, что направили на путь истинный.
И простите за назойливость, учусь :)
[vba]
Код
Set wb1 = Workbooks.Open(Filename:=Application.GetOpenFilename)
[/vba]
таким образом все отлично работает
 
Ответить
Сообщениенашел выход из ситуации, еще раз всем спасибо, что направили на путь истинный.
И простите за назойливость, учусь :)
[vba]
Код
Set wb1 = Workbooks.Open(Filename:=Application.GetOpenFilename)
[/vba]
таким образом все отлично работает

Автор - Xaden
Дата добавления - 10.07.2014 в 18:00
Hugo Дата: Четверг, 10.07.2014, 18:10 | Сообщение № 24
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3859
Репутация: 819 ±
Замечаний: 0% ±

365
Так Вы и не рассказали что хотели сделать.
Может это?
[vba]
Код
Sub Макрос1()
     Dim wb1 As Workbook, wb2 As Workbook, sh2 As Worksheet

     Set wb2 = ActiveWorkbook
     Set wb1 = Workbooks.Open(Filename:=Application.GetOpenFilename)
     Set sh2 = wb2.Sheets(1)

     Application.ScreenUpdating = False

     With wb1.Sheets(1)
         .UsedRange.Value = .UsedRange.Value
         .Range("$A$7:$EL$19984").AutoFilter Field:=1, Criteria1:= _
                    "первый", Operator:=xlOr
         .Columns("A:AP").Copy sh2.Range("A1")
     End With
      
     wb1.Close 0
End Sub
[/vba]


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеТак Вы и не рассказали что хотели сделать.
Может это?
[vba]
Код
Sub Макрос1()
     Dim wb1 As Workbook, wb2 As Workbook, sh2 As Worksheet

     Set wb2 = ActiveWorkbook
     Set wb1 = Workbooks.Open(Filename:=Application.GetOpenFilename)
     Set sh2 = wb2.Sheets(1)

     Application.ScreenUpdating = False

     With wb1.Sheets(1)
         .UsedRange.Value = .UsedRange.Value
         .Range("$A$7:$EL$19984").AutoFilter Field:=1, Criteria1:= _
                    "первый", Operator:=xlOr
         .Columns("A:AP").Copy sh2.Range("A1")
     End With
      
     wb1.Close 0
End Sub
[/vba]

Автор - Hugo
Дата добавления - 10.07.2014 в 18:10
Xaden Дата: Четверг, 10.07.2014, 18:41 | Сообщение № 25
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Так Вы и не рассказали что хотели сделать.
Может это?

Прошу прощения, но вроде как выше описывал, что мне надо было копировать данные с одного файла в другой. Но была проблема с открывающемся файлом с которого надо было переносить данные.
Простите коряво наверно объясняю, что хотел сделать. Но в целом вы угадали :)
Вот возник еще вопрос, буду благодарен если подскажите, у меня копируются только значения, возможно как то сделать, что бы и копировались формулы где они есть?
 
Ответить
Сообщение
Так Вы и не рассказали что хотели сделать.
Может это?

Прошу прощения, но вроде как выше описывал, что мне надо было копировать данные с одного файла в другой. Но была проблема с открывающемся файлом с которого надо было переносить данные.
Простите коряво наверно объясняю, что хотел сделать. Но в целом вы угадали :)
Вот возник еще вопрос, буду благодарен если подскажите, у меня копируются только значения, возможно как то сделать, что бы и копировались формулы где они есть?

Автор - Xaden
Дата добавления - 10.07.2014 в 18:41
Hugo Дата: Четверг, 10.07.2014, 18:53 | Сообщение № 26
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3859
Репутация: 819 ±
Замечаний: 0% ±

365
Вы же сами в коде первым делом убиваете все формулы...
Уберите строку
[vba]
Код
.UsedRange.Value = .UsedRange.Value
[/vba]


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеВы же сами в коде первым делом убиваете все формулы...
Уберите строку
[vba]
Код
.UsedRange.Value = .UsedRange.Value
[/vba]

Автор - Hugo
Дата добавления - 10.07.2014 в 18:53
Xaden Дата: Четверг, 10.07.2014, 19:08 | Сообщение № 27
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
ага понял, спасибо )))) совсем невнимателен
 
Ответить
Сообщениеага понял, спасибо )))) совсем невнимателен

Автор - Xaden
Дата добавления - 10.07.2014 в 19:08
Xaden Дата: Пятница, 11.07.2014, 11:07 | Сообщение № 28
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Вы же сами в коде первым делаом убиваете все формулы...
Уберите строку
.UsedRange.Value = .UsedRange.Value

Странно убрал данный кусок кода, но копирование все равно осуществляется без формул в ячейках.
 
Ответить
Сообщение
Вы же сами в коде первым делаом убиваете все формулы...
Уберите строку
.UsedRange.Value = .UsedRange.Value

Странно убрал данный кусок кода, но копирование все равно осуществляется без формул в ячейках.

Автор - Xaden
Дата добавления - 11.07.2014 в 11:07
Xaden Дата: Пятница, 11.07.2014, 11:41 | Сообщение № 29
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
del.


Сообщение отредактировал Xaden - Пятница, 11.07.2014, 12:25
 
Ответить
Сообщениеdel.

Автор - Xaden
Дата добавления - 11.07.2014 в 11:41
Xaden Дата: Пятница, 11.07.2014, 13:55 | Сообщение № 30
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Помогите пжл, я уже перерыл кучу инфы, но ничего не могу поделать, уже рыскался в скрытых формулах и защищенных ячейках, один фиг не переносит формулы.
Попробовал просто с файла в фаил перенести данные с формулами выходит такая фигня см.вложение
К сообщению приложен файл: 7268978.jpg (18.1 Kb)
 
Ответить
СообщениеПомогите пжл, я уже перерыл кучу инфы, но ничего не могу поделать, уже рыскался в скрытых формулах и защищенных ячейках, один фиг не переносит формулы.
Попробовал просто с файла в фаил перенести данные с формулами выходит такая фигня см.вложение

Автор - Xaden
Дата добавления - 11.07.2014 в 13:55
Xaden Дата: Пятница, 18.07.2014, 10:46 | Сообщение № 31
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
[vba]
Код
Sub Макрос1()
     Application.ScreenUpdating = False
      
     Dim wb1 As Workbook, wb2 As Workbook
     Dim SStr As String
     Dim Ci As Long, Cj As Long
      
     Set wb1 = ActiveWorkbook
     Workbooks.Open Filename:=Application.GetOpenFilename
     Set wb2 = ActiveWorkbook

     SStr = wb1.Sheets(1).Cells(3, 7)
     Ci = 1
     Cj = 1
     wb1.Sheets(2).Cells.Clear
     Do While wb2.Sheets(1).Cells(Ci, 1) <> ""
         If InStr(1, wb2.Sheets(1).Cells(Ci, 1), SStr, 1) Then
             wb2.Sheets(1).Rows(Ci).Copy
             wb1.Sheets(2).Activate
             Rows(Cj).Select
             ActiveSheet.Paste
             Cj = Cj + 1
         End If
         Ci = Ci + 1
     Loop
      
     Application.CutCopyMode = False
     wb2.Close SaveChanges:=False
     Application.ScreenUpdating = True
End Sub
[/vba]

Возникла трудность в работе макроса, в столбце где происходит поиск значения есть пустые ячейки, и макрос прекращает сразу работу как только натыкается на пустую ячейку, возможно ка кто исправить данный факт или же в файле исходника надо удалять пустые ячейки для корректной работы данного макроса?
 
Ответить
Сообщение[vba]
Код
Sub Макрос1()
     Application.ScreenUpdating = False
      
     Dim wb1 As Workbook, wb2 As Workbook
     Dim SStr As String
     Dim Ci As Long, Cj As Long
      
     Set wb1 = ActiveWorkbook
     Workbooks.Open Filename:=Application.GetOpenFilename
     Set wb2 = ActiveWorkbook

     SStr = wb1.Sheets(1).Cells(3, 7)
     Ci = 1
     Cj = 1
     wb1.Sheets(2).Cells.Clear
     Do While wb2.Sheets(1).Cells(Ci, 1) <> ""
         If InStr(1, wb2.Sheets(1).Cells(Ci, 1), SStr, 1) Then
             wb2.Sheets(1).Rows(Ci).Copy
             wb1.Sheets(2).Activate
             Rows(Cj).Select
             ActiveSheet.Paste
             Cj = Cj + 1
         End If
         Ci = Ci + 1
     Loop
      
     Application.CutCopyMode = False
     wb2.Close SaveChanges:=False
     Application.ScreenUpdating = True
End Sub
[/vba]

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

Автор - Xaden
Дата добавления - 18.07.2014 в 10:46
Hugo Дата: Пятница, 18.07.2014, 10:58 | Сообщение № 32
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3859
Репутация: 819 ±
Замечаний: 0% ±

365
Опять же повторюсь - ну Вы же сами так прописали в коде:
цикл идёт пока wb2.Sheets(1).Cells(Ci, 1) не равно ""
Если нужно иначе - нужно код писать иначе. Как нужно - известно пока только Вам.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеОпять же повторюсь - ну Вы же сами так прописали в коде:
цикл идёт пока wb2.Sheets(1).Cells(Ci, 1) не равно ""
Если нужно иначе - нужно код писать иначе. Как нужно - известно пока только Вам.

Автор - Hugo
Дата добавления - 18.07.2014 в 10:58
Xaden Дата: Пятница, 18.07.2014, 11:10 | Сообщение № 33
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Простите за назойливость.
Добавил файлы.
С файла "поставщики" по искомому значению происходит поиск в файле "исходник" в 1 столбце, но если там есть пустые ячейки макрос ничего не находит и в итоге ничего не переносит.
Макрос который дали, рабочий, все отлично я его вроде как разобрал, но не понимаю, почему он останавливается, как только доходит до пустой ячейки.
Судя по посту выше все достаточно банально и просто, но видать меня не хватает, что бы понять эту банальность.
К сообщению приложен файл: sdfs.rar (17.1 Kb)
 
Ответить
СообщениеПростите за назойливость.
Добавил файлы.
С файла "поставщики" по искомому значению происходит поиск в файле "исходник" в 1 столбце, но если там есть пустые ячейки макрос ничего не находит и в итоге ничего не переносит.
Макрос который дали, рабочий, все отлично я его вроде как разобрал, но не понимаю, почему он останавливается, как только доходит до пустой ячейки.
Судя по посту выше все достаточно банально и просто, но видать меня не хватает, что бы понять эту банальность.

Автор - Xaden
Дата добавления - 18.07.2014 в 11:10
Hugo Дата: Пятница, 18.07.2014, 11:14 | Сообщение № 34
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3859
Репутация: 819 ±
Замечаний: 0% ±

365
почему он останавливается, как только доходит до пустой ячейки
- потому что так написан код.
Вы ведь сами отказываетесь от фильтра и выбираете такой вариант. Вероятно так и нужно :)


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
Сообщение
почему он останавливается, как только доходит до пустой ячейки
- потому что так написан код.
Вы ведь сами отказываетесь от фильтра и выбираете такой вариант. Вероятно так и нужно :)

Автор - Hugo
Дата добавления - 18.07.2014 в 11:14
Xaden Дата: Пятница, 18.07.2014, 11:24 | Сообщение № 35
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
не подскажите как это исправить?
 
Ответить
Сообщениене подскажите как это исправить?

Автор - Xaden
Дата добавления - 18.07.2014 в 11:24
Xaden Дата: Пятница, 18.07.2014, 11:33 | Сообщение № 36
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Ув. Hugo спасибо за подсказки, разобрался, меня с толку сбивало ошибка которая вылетала, но вроде ее можно убрать?
 
Ответить
СообщениеУв. Hugo спасибо за подсказки, разобрался, меня с толку сбивало ошибка которая вылетала, но вроде ее можно убрать?

Автор - Xaden
Дата добавления - 18.07.2014 в 11:33
Hugo Дата: Пятница, 18.07.2014, 12:00 | Сообщение № 37
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3859
Репутация: 819 ±
Замечаний: 0% ±

365
Какая ошибка? Где? Когда?
Вообще мне тоже фильтр не нравится, я стараюсь делать иначе - обычно копирую данные через массив. Если конечно не нужны форматы и формулы. Мне обычно они не нужны.
Что нужно Вам - нам неизвестно.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеКакая ошибка? Где? Когда?
Вообще мне тоже фильтр не нравится, я стараюсь делать иначе - обычно копирую данные через массив. Если конечно не нужны форматы и формулы. Мне обычно они не нужны.
Что нужно Вам - нам неизвестно.

Автор - Hugo
Дата добавления - 18.07.2014 в 12:00
Xaden Дата: Пятница, 18.07.2014, 12:12 | Сообщение № 38
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
в том то и дело что мне нужны все форматы и формулы.

Допустим я так пишу[vba]
Код
Do While wb2.Sheets(1).Cells(Ci, 1) <> "="
[/vba], он переносит данные и сразу после переноса макрос выдает ошибку в этой сроке :) чет я намудрил наверно.
Простите я не могу выставить фаил исходник так как он содержит инфо. которую я не могу распространять да и сам фаил весит более 40мб.
Поэтому и сделал фаил исходник в качестве примера.
Попробую объяснить еще раз.
У меня есть фаил "исходник" где содержится информация по всем поставщикам, позициям и всякой ерунде, так вот в файле таких поставщиков очень много, мне например нужно все данные по определенному поставщику перенести в отдельный фаил в целом что и получается сделать, но в столбце поставщиков откуда я произвожу поиск есть пустые ячейки на чем макрос и останавливает свою работу.
Если Вас не затруднит и у Вас есть 5-10 мин, скачайте файлы, которые я выше прикрепил, я думаю если вы взгляните на них, вам все станет куда ясней.


Сообщение отредактировал Xaden - Пятница, 18.07.2014, 12:13
 
Ответить
Сообщениев том то и дело что мне нужны все форматы и формулы.

Допустим я так пишу[vba]
Код
Do While wb2.Sheets(1).Cells(Ci, 1) <> "="
[/vba], он переносит данные и сразу после переноса макрос выдает ошибку в этой сроке :) чет я намудрил наверно.
Простите я не могу выставить фаил исходник так как он содержит инфо. которую я не могу распространять да и сам фаил весит более 40мб.
Поэтому и сделал фаил исходник в качестве примера.
Попробую объяснить еще раз.
У меня есть фаил "исходник" где содержится информация по всем поставщикам, позициям и всякой ерунде, так вот в файле таких поставщиков очень много, мне например нужно все данные по определенному поставщику перенести в отдельный фаил в целом что и получается сделать, но в столбце поставщиков откуда я произвожу поиск есть пустые ячейки на чем макрос и останавливает свою работу.
Если Вас не затруднит и у Вас есть 5-10 мин, скачайте файлы, которые я выше прикрепил, я думаю если вы взгляните на них, вам все станет куда ясней.

Автор - Xaden
Дата добавления - 18.07.2014 в 12:12
Hugo Дата: Пятница, 18.07.2014, 12:47 | Сообщение № 39
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3859
Репутация: 819 ±
Замечаний: 0% ±

365
Можно цикл сделать таким:

[vba]
Код
Do
'работа
Loop While wb2.Sheets(1).Cells(Ci, 1) <> "метка"
[/vba]

если в файле есть "метка", которую можно искать.
Или использовать цикл For-Next - например перебирать все ячейки usedrange.columns(1), или сперва определить этот диапазон или номера строк от-до, затем их перебрать.
хотел Ваш код переделать - но некогда пока что, там почти всё нужно менять...


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеМожно цикл сделать таким:

[vba]
Код
Do
'работа
Loop While wb2.Sheets(1).Cells(Ci, 1) <> "метка"
[/vba]

если в файле есть "метка", которую можно искать.
Или использовать цикл For-Next - например перебирать все ячейки usedrange.columns(1), или сперва определить этот диапазон или номера строк от-до, затем их перебрать.
хотел Ваш код переделать - но некогда пока что, там почти всё нужно менять...

Автор - Hugo
Дата добавления - 18.07.2014 в 12:47
Xaden Дата: Пятница, 18.07.2014, 14:10 | Сообщение № 40
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Спасибо, буду пробовать, может, что и получится
 
Ответить
СообщениеСпасибо, буду пробовать, может, что и получится

Автор - Xaden
Дата добавления - 18.07.2014 в 14:10
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!