Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2018, 13:28   #1
Тем:)ч
 
Регистрация: 17.05.2018
Сообщений: 7
Печаль [РЕШЕНО][VB] Поиск значений по цвету и содержанию

Добрый день, помогите решить вопрос в следующем.
Есть таблица, не изменяющая размеры, но постоянно изменяющая содержание. Помогите настроить так чтобы на другом листе, этого же файла, из основной таблицы, система автоматически копировала не только те ячейки которые имеют знание "R", с заливкой 3(красный), но и соседнюю слева.
Файл во вложение, всю голову уже сломал.
Вложения
Тип файла: xls решение 1.xls (75.0 Кб, 9 просмотров)
Тем:)ч вне форума Ответить с цитированием
Старый 17.05.2018, 13:50   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

перебирай ячейки
Код:
Option Explicit
Sub CopyTxt()
    Dim r As Range
    Dim rC, cC, i, j
    Dim nR As Integer
    Set r = UsedRange
    rC = r.Rows.Count
    cC = r.Columns.Count
    Sheets("Лист2").Cells.Clear
    
    nR = 1
    With Sheets("Загородная жизнь")
    For i = 2 To rC
        For j = 1 To cC
            If Right(Trim(LCase(.Cells(i, j))), 1) = "r" Then
            If .Cells(i, j).Interior.ColorIndex = 3 Then
                Sheets("Лист2").Cells(nR, "B") = .Cells(i, j)
                Sheets("Лист2").Cells(nR, "A") = .Cells(i, j - 1)
                nR = nR + 1
            End If
            End If
    Next j, i
    End With
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 17.05.2018, 13:59   #3
Тем:)ч
 
Регистрация: 17.05.2018
Сообщений: 7
По умолчанию

Спасибо но ругается на вот эту строку

Set r = UsedRange
Тем:)ч вне форума Ответить с цитированием
Старый 17.05.2018, 15:23   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

А так?
Код:
Option Explicit
Sub CopyTxt()
    Dim r As Range
    Dim rC, cC, i, j
    Dim nR As Integer
    Sheets("Лист2").Cells.Clear
    
    nR = 1
    With Sheets("Загородная жизнь")
    Set r = .UsedRange
    rC = r.Rows.Count
    cC = r.Columns.Count
    For i = 2 To rC
        For j = 1 To cC
            If Right(Trim(LCase(.Cells(i, j))), 1) = "r" Then
            If .Cells(i, j).Interior.ColorIndex = 3 Then
                Sheets("Лист2").Cells(nR, "B") = .Cells(i, j)
                Sheets("Лист2").Cells(nR, "A") = .Cells(i, j - 1)
                nR = nR + 1
            End If
            End If
    Next j, i
    End With
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 17.05.2018, 15:29   #5
Тем:)ч
 
Регистрация: 17.05.2018
Сообщений: 7
По умолчанию

то же ругается, ошибка 424
Тем:)ч вне форума Ответить с цитированием
Старый 17.05.2018, 15:34   #6
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Файл с ошибкой где?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 17.05.2018, 15:38   #7
Тем:)ч
 
Регистрация: 17.05.2018
Сообщений: 7
По умолчанию

вот, единственное я меняю там вместо лист2, переписываю лист1.
Вложения
Тип файла: xls решение 1.xls (75.0 Кб, 10 просмотров)
Тем:)ч вне форума Ответить с цитированием
Старый 17.05.2018, 15:46   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

если заменить код на код из пост #4, ошибок нет:

Код:
Option Explicit
Sub CopyTxt()
    Dim r As Range
    Dim rC, cC, i, j
    Dim nR As Integer
    Sheets("Лист1").Cells.Clear
    
    nR = 1
    With Sheets("Загородная жизнь")
    Set r = .UsedRange
    rC = r.Rows.Count
    cC = r.Columns.Count
    For i = 2 To rC
        For j = 1 To cC
            If Right(Trim(LCase(.Cells(i, j))), 1) = "r" Then
            If .Cells(i, j).Interior.ColorIndex = 3 Then
                Sheets("Лист1").Cells(nR, "B") = .Cells(i, j)
                Sheets("Лист1").Cells(nR, "A") = .Cells(i, j - 1)
                nR = nR + 1
            End If
            End If
    Next j, i
    End With
End Sub
p.s.
а Вы реально не видите разницы в
Цитата:
Код:
     Set r = UsedRange
и
Код:
Set r = .UsedRange
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.05.2018, 15:59   #9
Тем:)ч
 
Регистрация: 17.05.2018
Сообщений: 7
По умолчанию

Спасибо большое работает. Жаль, что нельзя лист запаролить с результатом, чтобы ни кто не влез. Все ок
Тем:)ч вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск по содержанию файлОВ inkognitik Общие вопросы по Java, Java SE, Kotlin 0 27.03.2016 17:16
Как реализовать "Поиск по содержанию документа в папке" de2street C# (си шарп) 1 14.09.2015 11:39
Помогите сделать поиск названия книги, по её содержанию ... HAMMAN Помощь студентам 10 01.05.2009 04:46
Помогите сделать поиск по содержанию HAMMAN Помощь студентам 2 06.02.2009 20:11