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

Вход

Регистрация

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

 

= Мир MS Excel/Поиск значения и копирование текста на 2 лист - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Поиск значения и копирование текста на 2 лист
Поиск значения и копирование текста на 2 лист
konstantinp Дата: Пятница, 24.08.2012, 17:27 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 0 ±
Замечаний: 0% ±

Добрый день,
Помогите написать макрос.
Он должен искать по листу1 значение из ячейки А1 и при нахождении копировать эти данные, данные соседней слева ячейки и данные 1 ячейки в строке на 2 лист соответственно в столбцы А,В,С.
Значений будет много, нужно чтобы вставлял по порядку.
К сообщению приложен файл: 6714654.xls (68.0 Kb)
 
Ответить
СообщениеДобрый день,
Помогите написать макрос.
Он должен искать по листу1 значение из ячейки А1 и при нахождении копировать эти данные, данные соседней слева ячейки и данные 1 ячейки в строке на 2 лист соответственно в столбцы А,В,С.
Значений будет много, нужно чтобы вставлял по порядку.

Автор - konstantinp
Дата добавления - 24.08.2012 в 17:27
Формуляр Дата: Пятница, 24.08.2012, 17:45 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 832
Репутация: 255 ±
Замечаний: 0% ±

Excel 2003, 2013
Ничего не понятно. Дайте пример, что должно получиться в результате.


Excel 2003 EN, 2013 EN
 
Ответить
СообщениеНичего не понятно. Дайте пример, что должно получиться в результате.

Автор - Формуляр
Дата добавления - 24.08.2012 в 17:45
konstantinp Дата: Понедельник, 27.08.2012, 08:49 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 0 ±
Замечаний: 0% ±

Вставил руками во второй лист что должно получиться.
То есть ввожу в ячейку А1 дату, макрос должен искать все такие же даты и копировать из этой строки данные и переносить по порядку на лист2.
К сообщению приложен файл: 8165323.xls (68.5 Kb)
 
Ответить
СообщениеВставил руками во второй лист что должно получиться.
То есть ввожу в ячейку А1 дату, макрос должен искать все такие же даты и копировать из этой строки данные и переносить по порядку на лист2.

Автор - konstantinp
Дата добавления - 27.08.2012 в 08:49
_Boroda_ Дата: Понедельник, 27.08.2012, 10:30 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Ну вот где-то так примерно:
Для запуска нужно обновить дату в А1.

в 11:31 перевложил с небольшой поправочкой

Потом только сообразил, что не совсем то сделал, что просили. Поскольку вопрос уже решен, то исправлять не буду.
К сообщению приложен файл: 8165323_3.xls (54.5 Kb) · 8165323_3.rar (18.3 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеНу вот где-то так примерно:
Для запуска нужно обновить дату в А1.

в 11:31 перевложил с небольшой поправочкой

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

Автор - _Boroda_
Дата добавления - 27.08.2012 в 10:30
Gustav Дата: Понедельник, 27.08.2012, 11:21 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2757
Репутация: 1139 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
У меня какой-то такой макрик получился (если я правильно понял задание):
[vba]
Code

Sub findFromA1()
            
      Dim c As Range
      Dim d As Range
      Dim firstAddress As String
                
      With Sheets(1).Range(Columns(2), Columns(Columns.Count))
      Set c = .Find([A1], LookIn:=xlValues)
      If Not c Is Nothing Then
          firstAddress = c.Address
          Do
              Set d = [Лист2].Range("A" & Rows.Count).End(xlUp).Offset(1)
              d.Offset(0, 0) = c.Parent.Cells(c.Row, 1)
              d.Offset(0, 1) = c.Offset(0, -1)
              d.Offset(0, 2) = c
              Set c = .FindNext(c)
          Loop While Not c Is Nothing And c.Address <> firstAddress
      End If
      End With
                
End Sub
[/vba]


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Понедельник, 27.08.2012, 11:38
 
Ответить
СообщениеУ меня какой-то такой макрик получился (если я правильно понял задание):
[vba]
Code

Sub findFromA1()
            
      Dim c As Range
      Dim d As Range
      Dim firstAddress As String
                
      With Sheets(1).Range(Columns(2), Columns(Columns.Count))
      Set c = .Find([A1], LookIn:=xlValues)
      If Not c Is Nothing Then
          firstAddress = c.Address
          Do
              Set d = [Лист2].Range("A" & Rows.Count).End(xlUp).Offset(1)
              d.Offset(0, 0) = c.Parent.Cells(c.Row, 1)
              d.Offset(0, 1) = c.Offset(0, -1)
              d.Offset(0, 2) = c
              Set c = .FindNext(c)
          Loop While Not c Is Nothing And c.Address <> firstAddress
      End If
      End With
                
End Sub
[/vba]

Автор - Gustav
Дата добавления - 27.08.2012 в 11:21
konstantinp Дата: Понедельник, 27.08.2012, 11:37 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 0 ±
Замечаний: 0% ±

Gustav,
Спасибо! то что нужно!
_Boroda_,
Что то не могу открыть "ошибка 404"
 
Ответить
СообщениеGustav,
Спасибо! то что нужно!
_Boroda_,
Что то не могу открыть "ошибка 404"

Автор - konstantinp
Дата добавления - 27.08.2012 в 11:37
konstantinp Дата: Понедельник, 27.08.2012, 11:48 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 0 ±
Замечаний: 0% ±

_Boroda_,
Это мой долбаный рабочий антивирус файлы отбивает с "кодами", остановить его не могу.
Если не сложно, можно в архиве, пазязя)
Gustav,
А можете код расписать?
 
Ответить
Сообщение_Boroda_,
Это мой долбаный рабочий антивирус файлы отбивает с "кодами", остановить его не могу.
Если не сложно, можно в архиве, пазязя)
Gustav,
А можете код расписать?

Автор - konstantinp
Дата добавления - 27.08.2012 в 11:48
konstantinp Дата: Понедельник, 27.08.2012, 11:56 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 0 ±
Замечаний: 0% ±

_Boroda_,
Спасибо!
 
Ответить
Сообщение_Boroda_,
Спасибо!

Автор - konstantinp
Дата добавления - 27.08.2012 в 11:56
Gustav Дата: Понедельник, 27.08.2012, 12:14 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2757
Репутация: 1139 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Quote (konstantinp)
Gustav,
А можете код расписать?

В смысле прокомментировать операторы? Сам цикл я, не мудрствуя лукаво, спёр из хелпа для Find (или FindNext). Можете нажать на них F1 и всё увидите сам. Цикл будет повторяться до тех пор пока не будет снова найдено самое первое значение (контролируется по совпадению адресов текущей и самой первой найденной ячеек) - тогда цикл прекратится. После нахождения очередного значения в цикле происходит заполнение очередной строки на Листе2. Область поиска на Листе1 - начиная со второй колонки (B) и до последней (в первой же колонке у нас само значение для поиска, а также другие заранее заготовленные строки).


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Quote (konstantinp)
Gustav,
А можете код расписать?

В смысле прокомментировать операторы? Сам цикл я, не мудрствуя лукаво, спёр из хелпа для Find (или FindNext). Можете нажать на них F1 и всё увидите сам. Цикл будет повторяться до тех пор пока не будет снова найдено самое первое значение (контролируется по совпадению адресов текущей и самой первой найденной ячеек) - тогда цикл прекратится. После нахождения очередного значения в цикле происходит заполнение очередной строки на Листе2. Область поиска на Листе1 - начиная со второй колонки (B) и до последней (в первой же колонке у нас само значение для поиска, а также другие заранее заготовленные строки).

Автор - Gustav
Дата добавления - 27.08.2012 в 12:14
konstantinp Дата: Понедельник, 27.08.2012, 13:58 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 0 ±
Замечаний: 0% ±

Gustav,
Спасибо!
Ничего не понял))) biggrin


Сообщение отредактировал konstantinp - Понедельник, 27.08.2012, 14:00
 
Ответить
СообщениеGustav,
Спасибо!
Ничего не понял))) biggrin

Автор - konstantinp
Дата добавления - 27.08.2012 в 13:58
konstantinp Дата: Понедельник, 27.08.2012, 14:06 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 0 ±
Замечаний: 0% ±

Gustav,
А если "Тоже текст5" будет не в столбце"А", а в строке "1" над "Текст"?

d.Offset(0, 0) = c.Parent.Cells(c.Row, 1) - как тут сделать не столбец, а верхнюю строку?

Да, и еще я вставляю в книгу, где много листов - выдает ошибку.


Сообщение отредактировал konstantinp - Понедельник, 27.08.2012, 14:41
 
Ответить
СообщениеGustav,
А если "Тоже текст5" будет не в столбце"А", а в строке "1" над "Текст"?

d.Offset(0, 0) = c.Parent.Cells(c.Row, 1) - как тут сделать не столбец, а верхнюю строку?

Да, и еще я вставляю в книгу, где много листов - выдает ошибку.

Автор - konstantinp
Дата добавления - 27.08.2012 в 14:06
Gustav Дата: Понедельник, 27.08.2012, 15:05 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2757
Репутация: 1139 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Quote (konstantinp)
А если "Тоже текст5" будет не в столбце"А", а в строке "1" над "Текст"?
d.Offset(0, 0) = c.Parent.Cells(c.Row, 1) - как тут сделать не столбец, а верхнюю строку?

d.Offset(0, 0) = c.Parent.Cells(1, c.Column - 1)

Quote (konstantinp)
Да, и еще я вставляю в книгу, где много листов - выдает ошибку.

Наверное, тогда надо Sheets(1) заменить на ActiveSheet

Подозреваю также, что надо область поиска подкрутить. Как теперь надо? Всё, кроме первой строки? Или даже всё, кроме первой строки и первого столбца? Хорошо бы пример измененного файла...

P.S. Если кроме первой строки и первого столбца, то замените строку

With Sheets(1).Range(Columns(2), Columns(Columns.Count))

на

With ActiveSheet.Range(Cells(2, 2), Cells.SpecialCells(xlCellTypeLastCell))


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Понедельник, 27.08.2012, 15:18
 
Ответить
Сообщение
Quote (konstantinp)
А если "Тоже текст5" будет не в столбце"А", а в строке "1" над "Текст"?
d.Offset(0, 0) = c.Parent.Cells(c.Row, 1) - как тут сделать не столбец, а верхнюю строку?

d.Offset(0, 0) = c.Parent.Cells(1, c.Column - 1)

Quote (konstantinp)
Да, и еще я вставляю в книгу, где много листов - выдает ошибку.

Наверное, тогда надо Sheets(1) заменить на ActiveSheet

Подозреваю также, что надо область поиска подкрутить. Как теперь надо? Всё, кроме первой строки? Или даже всё, кроме первой строки и первого столбца? Хорошо бы пример измененного файла...

P.S. Если кроме первой строки и первого столбца, то замените строку

With Sheets(1).Range(Columns(2), Columns(Columns.Count))

на

With ActiveSheet.Range(Cells(2, 2), Cells.SpecialCells(xlCellTypeLastCell))

Автор - Gustav
Дата добавления - 27.08.2012 в 15:05
konstantinp Дата: Понедельник, 27.08.2012, 15:16 | Сообщение № 13
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 0 ±
Замечаний: 0% ±

Gustav,
сейчас скину пример.


Сообщение отредактировал konstantinp - Понедельник, 27.08.2012, 15:19
 
Ответить
СообщениеGustav,
сейчас скину пример.

Автор - konstantinp
Дата добавления - 27.08.2012 в 15:16
konstantinp Дата: Понедельник, 27.08.2012, 15:21 | Сообщение № 14
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 0 ±
Замечаний: 0% ±

А можно сделать, чтобы по всем листам искал?
К сообщению приложен файл: 7493479.rar (13.5 Kb)


Сообщение отредактировал konstantinp - Понедельник, 27.08.2012, 15:22
 
Ответить
СообщениеА можно сделать, чтобы по всем листам искал?

Автор - konstantinp
Дата добавления - 27.08.2012 в 15:21
Gustav Дата: Понедельник, 27.08.2012, 15:23 | Сообщение № 15
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2757
Репутация: 1139 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Quote (konstantinp)
Поиск -везде кроме первой строки.

smile выполните замену из предыдущего сообщения (P.S.)


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Quote (konstantinp)
Поиск -везде кроме первой строки.

smile выполните замену из предыдущего сообщения (P.S.)

Автор - Gustav
Дата добавления - 27.08.2012 в 15:23
Gustav Дата: Понедельник, 27.08.2012, 15:39 | Сообщение № 16
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2757
Репутация: 1139 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Quote (konstantinp)
А можно сделать, чтобы по всем листам искал?

Поиск по всем, кроме Лист2, на который пишем:
[vba]
Code

Sub findFromA1v2()
            
      Dim wks As Worksheet
      Dim c As Range
      Dim d As Range
      Dim firstAddress As String
        
      For Each wks In ThisWorkbook.Worksheets
       
          If wks.Name <> "Лист2" Then
      
              firstAddress = ""
              With wks.Range(wks.Cells(2, 2), wks.Cells.SpecialCells(xlCellTypeLastCell))
                  Set c = .Find(wks.Range("A1"), LookIn:=xlValues)
                  If Not c Is Nothing Then
                      firstAddress = c.Address
                      Do
                          Set d = [Лист2].Range("A" & Rows.Count).End(xlUp).Offset(1)
                          d.Offset(0, 0) = wks.Cells(1, c.Column - 1)
                          d.Offset(0, 1) = c.Offset(0, -1)
                          d.Offset(0, 2) = c
                          d.Offset(0, 3) = wks.Name 'для наглядности имя листа
                          Set c = .FindNext(c)
                      Loop While Not c Is Nothing And c.Address <> firstAddress
                  End If
              End With
            
          End If
            
      Next wks
        
End Sub
[/vba]


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Понедельник, 27.08.2012, 15:41
 
Ответить
Сообщение
Quote (konstantinp)
А можно сделать, чтобы по всем листам искал?

Поиск по всем, кроме Лист2, на который пишем:
[vba]
Code

Sub findFromA1v2()
            
      Dim wks As Worksheet
      Dim c As Range
      Dim d As Range
      Dim firstAddress As String
        
      For Each wks In ThisWorkbook.Worksheets
       
          If wks.Name <> "Лист2" Then
      
              firstAddress = ""
              With wks.Range(wks.Cells(2, 2), wks.Cells.SpecialCells(xlCellTypeLastCell))
                  Set c = .Find(wks.Range("A1"), LookIn:=xlValues)
                  If Not c Is Nothing Then
                      firstAddress = c.Address
                      Do
                          Set d = [Лист2].Range("A" & Rows.Count).End(xlUp).Offset(1)
                          d.Offset(0, 0) = wks.Cells(1, c.Column - 1)
                          d.Offset(0, 1) = c.Offset(0, -1)
                          d.Offset(0, 2) = c
                          d.Offset(0, 3) = wks.Name 'для наглядности имя листа
                          Set c = .FindNext(c)
                      Loop While Not c Is Nothing And c.Address <> firstAddress
                  End If
              End With
            
          End If
            
      Next wks
        
End Sub
[/vba]

Автор - Gustav
Дата добавления - 27.08.2012 в 15:39
konstantinp Дата: Понедельник, 27.08.2012, 15:40 | Сообщение № 17
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 0 ±
Замечаний: 0% ±

Gustav,
Чо та не то.
Он смотрит на каждом листе ячейку А1 и от нее проверяет.
Можно сделать, чтобы в одном месте смотрел?


Сообщение отредактировал konstantinp - Понедельник, 27.08.2012, 15:48
 
Ответить
СообщениеGustav,
Чо та не то.
Он смотрит на каждом листе ячейку А1 и от нее проверяет.
Можно сделать, чтобы в одном месте смотрел?

Автор - konstantinp
Дата добавления - 27.08.2012 в 15:40
Gustav Дата: Понедельник, 27.08.2012, 15:53 | Сообщение № 18
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2757
Репутация: 1139 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Quote (konstantinp)
Можно сделать, чтобы в одном месте смотрел?

Можно. В строке Set c = .Find(wks.Range("A1"), LookIn:=xlValues)

меняем wks на Worksheets("Лист1")

(или какой там надо Лист, если не первый)


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Quote (konstantinp)
Можно сделать, чтобы в одном месте смотрел?

Можно. В строке Set c = .Find(wks.Range("A1"), LookIn:=xlValues)

меняем wks на Worksheets("Лист1")

(или какой там надо Лист, если не первый)

Автор - Gustav
Дата добавления - 27.08.2012 в 15:53
konstantinp Дата: Понедельник, 27.08.2012, 15:58 | Сообщение № 19
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 0 ±
Замечаний: 0% ±

Gustav,
Я бы тебе медаль вручил за терпение) Спасибо!
А можешь еще помочь кое с чем?
Эти данные (сформированные) нужно разослать адресатам по Outlook, где из получившихся данных в 1 столбце адреса?
 
Ответить
СообщениеGustav,
Я бы тебе медаль вручил за терпение) Спасибо!
А можешь еще помочь кое с чем?
Эти данные (сформированные) нужно разослать адресатам по Outlook, где из получившихся данных в 1 столбце адреса?

Автор - konstantinp
Дата добавления - 27.08.2012 в 15:58
Gustav Дата: Понедельник, 27.08.2012, 16:13 | Сообщение № 20
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2757
Репутация: 1139 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Quote (konstantinp)
А можешь еще помочь кое с чем?
Эти данные (сформированные) нужно разослать адресатам по Outlook, где из получившихся данных в 1 столбце адреса?

Не, не могу. В Outlook'е рука не набита и модель ее объектную не очень знаю. Плюс, насколько смутно помню, там всякие рогатки безопасности всплывают при серийной отправке. Типа надо сидеть и на каждый адрес ОК кликать. Хотя может уже и не так сурово, давненько я с этим ковырялся.

Кинь предложение в раздел "Работа" или, может, тут кто из ребят заинтересуется, сделает.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Quote (konstantinp)
А можешь еще помочь кое с чем?
Эти данные (сформированные) нужно разослать адресатам по Outlook, где из получившихся данных в 1 столбце адреса?

Не, не могу. В Outlook'е рука не набита и модель ее объектную не очень знаю. Плюс, насколько смутно помню, там всякие рогатки безопасности всплывают при серийной отправке. Типа надо сидеть и на каждый адрес ОК кликать. Хотя может уже и не так сурово, давненько я с этим ковырялся.

Кинь предложение в раздел "Работа" или, может, тут кто из ребят заинтересуется, сделает.

Автор - Gustav
Дата добавления - 27.08.2012 в 16:13
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Поиск значения и копирование текста на 2 лист
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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