VBA.Exel.Несколько вопросов начинающего ...

Программирование на Visual Basic for Applications
НиколайП
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 125
Зарегистрирован: 06.12.2005 (Вт) 22:16

VBA.Exel.Несколько вопросов начинающего ...

Сообщение НиколайП » 09.02.2006 (Чт) 2:06

документ Exel: столбцы A,B,C,D,E,F ; колонки : изменяемое количество.

вопросы.
1. найти в столбце А ячейку с текстом "начало" и удалить все строки до этой ячейки , затем найти (в столбике А) ячейку с текстом "конец" и удалить все строки после этой ячейки

2. создать дополнительный столбик G и поместить в него результат формулы F(номер строки)*intC*intP;10 (для каждой строки) в текстовом формате
(intC и intP - это переменные Integer)
3. ....
блин , легче файлик приаттачить в котором всё лучше видно что есть и что надо из этого получить ...

Для профессионала я думаю это задача минут на 5 , так что надеюсь сильно не обидетесь за такую маленькую наглость с моей стороны :oops:
Вложения
наглядно.rar
(10.68 Кб) Скачиваний: 40

rok
Новичок
Новичок
 
Сообщения: 49
Зарегистрирован: 18.06.2005 (Сб) 12:45

Сообщение rok » 26.02.2006 (Вс) 22:25

Данная процедура дает ответ на первый вопрос
Sub mydel()
Dim myrows1, myrows2, myrows3, myrows4, a, b
ActiveCell.CurrentRegion.Select
For Each a In Selection
b = a.Address
Next
myrows1 = Mid(ActiveCell.Address, _
InStr(2, ActiveCell.Address, "$") + 1)
Selection.Find(What:="начало").Activate
myrows2 = Mid(ActiveCell.Address, _
InStr(2, ActiveCell.Address, "$") + 1) - 1
Selection.Find(What:="конец").Activate
myrows3 = Mid(ActiveCell.Address, _
InStr(2, ActiveCell.Address, "$") + 1) + 1
myrows4 = Mid(b, InStr(2, b, "$") + 1)
b = myrows1 & ":" & myrows2 & "," & myrows3 & ":" & myrows4
Range(b).Select
Selection.Delete Shift:=xlUp
End Sub
А распаковать файл не получилось.

rok
Новичок
Новичок
 
Сообщения: 49
Зарегистрирован: 18.06.2005 (Сб) 12:45

Сообщение rok » 26.02.2006 (Вс) 23:40

Прошу прощения,но процедура должна выглядеть иначе.
sub mydel
Dim s1, s2, s3, s4, a, b
ActiveCell.CurrentRegion.Select
For Each a In Selection
s4 = a.Row
Next
s1 = ActiveCell.Row
Selection.Find(What:="начало").Activate
s2 = ActiveCell.Row - 1
Selection.Find(What:="конец").Activate
s3 = ActiveCell.Row + 1
b = s1 & ":" & s2 & "," & s3 & ":" & s4
Range(b).Select
Selection.Delete Shift:=xlUp
End Sub

rok
Новичок
Новичок
 
Сообщения: 49
Зарегистрирован: 18.06.2005 (Сб) 12:45

Сообщение rok » 26.02.2006 (Вс) 23:51

Или ещё проще
Sub mydel()
Dim s1, s2, s3, s4, a, b
ActiveCell.CurrentRegion.Select
s1 = ActiveCell.Row
s4 = Selection.Rows.Count + s1 - 1
Selection.Find(What:="начало").Activate
s2 = ActiveCell.Row - 1
Selection.Find(What:="конец").Activate
s3 = ActiveCell.Row + 1
b = s1 & ":" & s2 & "," & s3 & ":" & s4
Range(b).Select
Selection.Delete Shift:=xlUp
End Sub


Вернуться в VBA

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

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

    TopList