Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как выбрать последовательно столбцы по признаку? / 3 сообщений из 3, страница 1 из 1
12.11.2007, 14:49
    #34932456
vad-anatolij
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать последовательно столбцы по признаку?
Ехель 2003.
есть таблица

I Цех1 I Цех6 I Цех3 I Цех2 I Цех1 I Цех1 I Цех2 I Цех4 I Цех4 I Цех1 I


Мне нужно выбрать Цех1 и Цех2

С помощью макроса
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
  Set videlenCEH1 = Range(Cells( 1 ,  1 ), Cells( 20 ,  100 )).Find(What:="CEH1", LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False)
    If Not videlenCEH1 Is Nothing Then
    firstAddressCEH1 = videlenCEH1.Address
         Do
            strCEH1 = videlenCEH1.Row
            idCEH1 = videlenCEH1.Column
            Range(Cells( 1 , idCEH1), Cells( 50 , idCEH1)).Select
            Selection.Copy
            Sheets("sheet2").Select
            Cells( 1 , yach).Select
            ActiveSheet.Paste
            Sheets("sheet1").Select
            yach = yach +  1 
            schCEH1 = schCEH1 +  1 
         Set videlenCEH1 = Range(Cells( 1 ,  1 ), Cells( 20 ,  100 )).FindNext(videlenCEH1)
         Loop While videlenCEH1.Address <> firstAddressCEH1
    End If
    Set videlenCEH2 = Range(Cells( 2 ,  1 ), Cells( 20 ,  100 )).Find(What:="CEH2", LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False)
                If Not videlenCEH2 Is Nothing Then
                firstAddressCEH2 = videlenCEH2.Address
                Do
                    strCEH2 = videlenCEH2.Row
                    idCEH2 = videlenCEH2.Column
                    Range(Cells( 1 , idCEH2), Cells( 50 , idCEH2)).Select
                    Selection.Copy
                    Sheets("sheet2").Select
                    Cells( 1 , yach).Select
                    ActiveSheet.Paste
                    Sheets("sheet1").Select
                    yach = yach +  1 
                    schCEH2 = schCEH2 +  1 
                Set videlenCEH2 = Range(Cells( 2 ,  1 ), Cells( 20 , PravStPaketn)).FindNext(videlenCEH2)
            Loop While videlenCEH2.Address <> firstAddressCEH2
    End If
End Sub

 
я могу выбрать так (сначала столбцы с Цех1, потом с Цех2)

I Цех1 I Цех1 I Цех1 I Цех1 I Цех2 I Цех2 I

или вставив нижний цикл внутрь верхнего

I Цех1 I Цех2 I Цех2 I Цех1 I ...

А мне нужно

I Цех1 I Цех2 I Цех1 I Цех1 I Цех2 I Цех1 I

Никто не поможет?
Спасибо.
...
Рейтинг: 0 / 0
12.11.2007, 15:24
    #34932672
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать последовательно столбцы по признаку?
если в первой строке назвнаия столбцов, то
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Public Sub test()
    Dim i As Integer
    Dim strCol As String
    Dim Col As String
    
    'бежим по первой строке и находим, где есть искомое значение
    For i =  1  To  20 
        If Cells( 1 , i) = "q" Or Cells( 1 , i) = "w" Then
            Col = Mid(Cells( 1 , i).Address,  2 ,  1 )
            strCol = strCol + "," + Col + ":" + Col
        End If
    Next i
    'копируем столбцы и переносим на новый лист
    If strCol <> "" Then
        Range(Mid(strCol,  2 ,  255 )).Select
        Selection.Copy
        Sheets("Лист2").Select
        ActiveSheet.Paste
    End If
    
End Sub

или не то?
I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
13.11.2007, 15:28
    #34935720
vad-anatolij
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать последовательно столбцы по признаку?
HandKot Col = Mid(Cells(1, i).Address, 2, 1)

Количество столбцов более 100, т. е. адрес ячейки может быть $EA$16.
Тогда в случае $E$16 мы получим "Е", а при $EA$16 другой результат, так?

А если я ищу одно слово в словосочетании? Т.е. в ячейке не одно слово "CEH1" а два?
Сопутствующие вопросы)).
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как выбрать последовательно столбцы по признаку? / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]