Сравнить данные 2 листов и перенести строки в нужное место

Программирование на Visual Basic for Applications
Boombeat
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 15.01.2005 (Сб) 12:32

Сравнить данные 2 листов и перенести строки в нужное место

Сообщение Boombeat » 14.08.2006 (Пн) 22:12

есть необходимость в следующем:

На Листе1 в столбце1 есть значения в виде чисел
На Листе2 в столбце1 есть текст среди которого есть числа (..Текст (число) текст...) из столбца1 Листа1
Нужно, чтобы все сроки Листа1 в столбце1 которого есть числа из Столбца1 Листа2 переносились на Лист2 и добавлялись сразу после строки удовлетворяющей требованию со здвигом вниз.

Надеюсь, что понятно выразился и очень надеюсь на вашу помощь.

(Если сравнивать значение Листа1 со значением Листа2 в тексте строки сложно, то тогда подойдет вариант со сравнением значений и копировании при равенстве)

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 15.08.2006 (Вт) 8:25

If isNumeric(Ячейка) then - если число
Премещение по ячейкам и листам описывалось много раз.Все есть на форуме...
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)

Boombeat
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 15.01.2005 (Сб) 12:32

Сообщение Boombeat » 15.08.2006 (Вт) 8:31

SergT писал(а):If isNumeric then


А можно пример кода?

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 15.08.2006 (Вт) 8:37

По поиску...

Например, первое что попалось, есть тут:
http://bbs.vbstreets.ru/viewtopic.php?t ... 7%E5%E5%EA
Не стесняйся, в верхней части страницы есть ссылка "Поиск"...

"...требованию со здвигом вниз..." - сдвиг вниз, это видимо добавить строку?

Вот тебе совет, запиши макрос - запусти запись макроса в Excel и проделай вручную перемещение по листам, ячейкам, делай вставки и сдвиги.... Сохрани Макрос и посмотри, что получилось.
Последний раз редактировалось SergT 15.08.2006 (Вт) 8:46, всего редактировалось 1 раз.
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 15.08.2006 (Вт) 8:41

Перебором строк первого столбца определяешь, где значение=число и тут же переносишь на первый лист. Единственное, что встанет вопрос в определении места вставки. В первую же пустую? Короче, примеров тому уйма! Удачи в поиске :)
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)

Boombeat
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 15.01.2005 (Сб) 12:32

Сообщение Boombeat » 15.08.2006 (Вт) 8:44

SergT писал(а):По поиску...

Например, первое что попалось, есть тут:
http://bbs.vbstreets.ru/viewtopic.php?t ... 7%E5%E5%EA
Не стесняйся, в верхней части страницы есть ссылка "Поиск"...


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

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 15.08.2006 (Вт) 8:51

Запиши Макрос, кликая мышкой на листы и ячейки, делая вставки...Затем посмотри,что получилось. Excel умный, он сам тебе поможет, а потом - на форум в поиск! Уверяю, что на форуме есть почти все, что тебе надо, но у меня :? мало времени...

http://bbs.vbstreets.ru/search.php
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 15.08.2006 (Вт) 9:34

Наспех набросал:
Вставь в Excel, запусти Макрос1Sub Макрос1()
Dim i As Long
Dim s As String
Sheets("Лист1").Select
For i = 1 To 20
s = Sheets("Лист2").Range("A" & i).Text
If IsNumeric(s) Then
MsgBox s
INSERT_NEW_VAL s
End If
Next i
End Sub
'-----------------------------------------------------------
Function INSERT_NEW_VAL(NewVal As String)
Dim i As Long
Dim CurVal
For i = 1 To 20
CurVal = Sheets("Лист1").Range("A" & i).Text
If NewVal <> CurVal Then
Rows(i + 1 & ":" & i + 1).Insert Shift:=xlDown
Range("A" & i + 1) = NewVal
Exit For
Else
Exit Function
End If
Next i
End Function
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)

Boombeat
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 15.01.2005 (Сб) 12:32

Сообщение Boombeat » 15.08.2006 (Вт) 21:44

SergT писал(а):Наспех набросал:
Вставь в Excel, запусти Макрос1Sub Макрос1()
Dim i As Long
Dim s As String
Sheets("Лист1").Select
For i = 1 To 20
s = Sheets("Лист2").Range("A" & i).Text
If IsNumeric(s) Then
MsgBox s
INSERT_NEW_VAL s
End If
Next i
End Sub
'-----------------------------------------------------------
Function INSERT_NEW_VAL(NewVal As String)
Dim i As Long
Dim CurVal
For i = 1 To 20
CurVal = Sheets("Лист1").Range("A" & i).Text
If NewVal <> CurVal Then
Rows(i + 1 & ":" & i + 1).Insert Shift:=xlDown
Range("A" & i + 1) = NewVal
Exit For
Else
Exit Function
End If
Next i
End Function



1. Копируется только значение ячейки, а как сделать чтобы копировалась вся строка?
2. И главное, строка добавляется не под строкой с найденным значением (а под 1-й строкой листа)

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 16.08.2006 (Ср) 8:57

Может мне всё самому сделать? Я показал в примере, как найти значение и как добавить строку :evil: Всё остальное - сам! Если сам не можешь или не хочешь, то :shock: ....
Вот из поиска по форуму:
http://bbs.vbstreets.ru/viewtopic.php?t ... 0%EE%EA%E8
Всего доброго!
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 67

    TopList