powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Нахождение ячеек определенного цвета в Range
16 сообщений из 16, страница 1 из 1
Нахождение ячеек определенного цвета в Range
    #34511950
Slice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день
Нужно определить ячейки определенного цвета из известного Range и разложить их по столбцам


Пример
А1 красная
С2 красная

Должен писать
В столбце А красная ячейка А1
В столбце С красная ячейка С2

Может кто сталкивался с этим
...
Рейтинг: 0 / 0
Нахождение ячеек определенного цвета в Range
    #34512432
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть если правильно понял, то где ячейка красная (A1),то в A1 написать фразу "красная ячейка А1"?
...
Рейтинг: 0 / 0
Нахождение ячеек определенного цвета в Range
    #34512632
Slice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
написать это надо вне range, который задается
Главное чтоб он по колонкам искал, как в цикле по ячейкам различать какому столбцу они принадлежат?
...
Рейтинг: 0 / 0
Нахождение ячеек определенного цвета в Range
    #34512704
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лови наиболее общий, гибкий пример!

Не сможешь переделать под себя, присылай файл с примером как должно получиться и из чего, а то слишком обстрактно объясняешь, а результат должен быть конкретным
...
Рейтинг: 0 / 0
Нахождение ячеек определенного цвета в Range
    #34512707
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот и пример
...
Рейтинг: 0 / 0
Нахождение ячеек определенного цвета в Range
    #34512859
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SliceДобрый день
Нужно определить ячейки определенного цвета из известного Range и разложить их по столбцам


Пример
А1 красная
С2 красная

Должен писать
В столбце А красная ячейка А1
В столбце С красная ячейка С2

Может кто сталкивался с этим

http://www.cpearson.com/excel/colors.htm


KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Нахождение ячеек определенного цвета в Range
    #34514475
Slice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deggasad
А вот и пример
Код: plaintext
1.
2.
3.
For Each icel In GdeIskat
  If icel.Interior.ColorIndex = EtColor Then FindColor = FindColor & " ; " & icel.Address( 0 ,  0 )
 Next icel



До этого я и сам дошел, а как сделать так, чтобы он не перечислял, что в диапазоне найдены ячейки из разных столбцов одного цвета, а писал типа так:
вдиапазоне A1J10 в столбце A красная A1, в столбце B - B3,B4 и так далее.

Можно конечно писать кучу условий типа

Код: plaintext
1.
2.
3.
4.
5.
6.
If instr(icel.localaddress,"A")<> then
           писать в одно место
end if
If instr(icel.localaddress,"B")<> then
           писать в одно место
end if

Но колонок более 30. Теперь попонятне стало?
...
Рейтинг: 0 / 0
Нахождение ячеек определенного цвета в Range
    #34514476
Slice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибочка

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
If instr(icel.localaddress,"A")<> 0  then
           писать в одно место
end if
If instr(icel.localaddress,"B")<> 0  then
           писать в одно место
end if


...
Рейтинг: 0 / 0
Нахождение ячеек определенного цвета в Range
    #34515382
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slice
До этого я и сам дошел, а как сделать так, чтобы он не перечислял, что в диапазоне найдены ячейки из разных столбцов одного цвета, а писал типа так:
вдиапазоне A1J10 в столбце A красная A1, в столбце B - B3,B4 и так далее.

Но колонок более 30. Теперь попонятне стало?

Ну как тебе сказать...

Посмотри файл, но там есть недостаток который я указал. Поэтому сам смотри как им пользоваться!
...
Рейтинг: 0 / 0
Нахождение ячеек определенного цвета в Range
    #34515547
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот функция, только одно ограничение GdeIskat - обязательно выделять одним диапазоном, Если несколько выделить будет неправильно считать

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Public Function FColor(Optional Etalon As Range, Optional GdeIskat As Range) As String
 Dim EtColor As Long, FRow, LRow, FCol, LCol, x, y, icel As Range, ColLetter As String, stroka1, stroka2, FindColor
 EtColor = Etalon.Interior.ColorIndex
 FRow = GdeIskat( 1 ).Row
 LRow = GdeIskat(GdeIskat.Count).Row
 FCol = GdeIskat( 1 ).Column
 LCol = GdeIskat(GdeIskat.Count).Column
 
 For y = FCol To LCol
   For x = FRow To LRow
    If Cells(x, y).Interior.ColorIndex = EtColor Then stroka1 = stroka1 & "," & Cells(x, y).Address( 0 ,  0 )
   Next
   ColLetter = Split(Columns(y).Address, ":$")( 1 )
   stroka2 = stroka2 & Chr( 10 ) & "в столбце " & ColLetter & " - ячейки " & stroka1
   stroka1 = ""
 Next

FColor = "В диапазоне " & GdeIskat.Address( 0 ,  0 ) & _
" цветом " & EtColor & "(ячейка " & Etalon.Address( 0 ,  0 ) & ") окрашены ячейки " & stroka2
End Function
...
Рейтинг: 0 / 0
Нахождение ячеек определенного цвета в Range
    #34516051
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот теперь всё нормально:

Public Function FColor(Optional Etalon As Range, Optional GdeIskat As Range) As String
Dim EtColor As Long, rngColumn As Range, rngRows As Range, ColLetter As String, stroka1 As String, stroka2 As String
EtColor = Etalon.Interior.ColorIndex

For Each rngColumn In GdeIskat.Columns
For Each rngRows In rngColumn.Rows
If rngRows.Interior.ColorIndex = EtColor Then stroka1 = stroka1 & "," & rngRows.Address(0, 0)
Next
ColLetter = Split(Columns(rngColumn.Column).Address, ":$")(1)
stroka2 = stroka2 & Chr(10) & "в столбце " & ColLetter & " - " & _
IIf(stroka1 = "", "нет", "ячейки " & Replace(stroka1, ",", "", 1, 1))
stroka1 = ""
Next

FColor = "В диапазоне " & GdeIskat.Address(0, 0) & _
" цветом " & EtColor & "(ячейка " & Etalon.Address(0, 0) & ") окрашены: " & stroka2
End Function
...
Рейтинг: 0 / 0
Нахождение ячеек определенного цвета в Range
    #34518090
Slice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeggasadВот теперь всё нормально:

Public Function FColor(Optional Etalon As Range, Optional GdeIskat As Range) As String
Dim EtColor As Long, rngColumn As Range, rngRows As Range, ColLetter As String, stroka1 As String, stroka2 As String
EtColor = Etalon.Interior.ColorIndex

For Each rngColumn In GdeIskat.Columns
For Each rngRows In rngColumn.Rows
If rngRows.Interior.ColorIndex = EtColor Then stroka1 = stroka1 & "," & rngRows.Address(0, 0)
Next
ColLetter = Split(Columns(rngColumn.Column).Address, ":$")(1)
stroka2 = stroka2 & Chr(10) & "в столбце " & ColLetter & " - " & _
IIf(stroka1 = "", "нет", "ячейки " & Replace(stroka1, ",", "", 1, 1))
stroka1 = ""
Next

FColor = "В диапазоне " & GdeIskat.Address(0, 0) & _
" цветом " & EtColor & "(ячейка " & Etalon.Address(0, 0) & ") окрашены: " & stroka2
End Function



Спасибо, прям то что надо))
...
Рейтинг: 0 / 0
Нахождение ячеек определенного цвета в Range
    #34518447
Slice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вопросик в догонку..... Почему при изменение формата данных в ячейках, не все принимают этот формат? приходится в каждую из них дабл кликом заходить, как через VBA попросить эксель принимать нужный формат во всех ячейках?
...
Рейтинг: 0 / 0
Нахождение ячеек определенного цвета в Range
    #34518585
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SliceЕще вопросик в догонку..... Почему при изменение формата данных в ячейках, не все принимают этот формат? приходится в каждую из них дабл кликом заходить, как через VBA попросить эксель принимать нужный формат во всех ячейках?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Public Function FColor(Optional Etalon As Range, Optional GdeIskat As Range) As String
 Dim EtColor As Long, rngColumn As Range, rngRows As Range, ColLetter As String, stroka1 As String, stroka2 As String
 EtColor = Etalon.Interior.ColorIndex
 Application.Volatile
 For Each rngColumn In GdeIskat.Columns
   For Each rngRows In rngColumn.Rows
    If rngRows.Interior.ColorIndex = EtColor Then stroka1 = stroka1 & "," & rngRows.Address( 0 ,  0 )
   Next
   ColLetter = Split(Columns(rngColumn.Column).Address, ":$")( 1 )
   stroka2 = stroka2 & Chr( 10 ) & "в столбце " & ColLetter & " - " & _
   IIf(stroka1 = "", "нет", "ячейки " & Replace(stroka1, ",", "",  1 ,  1 ))
   stroka1 = ""
 Next

FColor = "В диапазоне " & GdeIskat.Address( 0 ,  0 ) & _
" цветом " & EtColor & "(ячейка " & Etalon.Address( 0 ,  0 ) & ") окрашены: " & stroka2
End Function

Поменяй на эту функцию или сам добавь строку
Код: plaintext
 Application.Volatile
И можно обновлять по нажатию <F9>
...
Рейтинг: 0 / 0
Нахождение ячеек определенного цвета в Range
    #34519248
Slice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deggasad SliceЕще вопросик в догонку..... Почему при изменение формата данных в ячейках, не все принимают этот формат? приходится в каждую из них дабл кликом заходить, как через VBA попросить эксель принимать нужный формат во всех ячейках?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Public Function FColor(Optional Etalon As Range, Optional GdeIskat As Range) As String
 Dim EtColor As Long, rngColumn As Range, rngRows As Range, ColLetter As String, stroka1 As String, stroka2 As String
 EtColor = Etalon.Interior.ColorIndex
 Application.Volatile
 For Each rngColumn In GdeIskat.Columns
   For Each rngRows In rngColumn.Rows
    If rngRows.Interior.ColorIndex = EtColor Then stroka1 = stroka1 & "," & rngRows.Address( 0 ,  0 )
   Next
   ColLetter = Split(Columns(rngColumn.Column).Address, ":$")( 1 )
   stroka2 = stroka2 & Chr( 10 ) & "в столбце " & ColLetter & " - " & _
   IIf(stroka1 = "", "нет", "ячейки " & Replace(stroka1, ",", "",  1 ,  1 ))
   stroka1 = ""
 Next

FColor = "В диапазоне " & GdeIskat.Address( 0 ,  0 ) & _
" цветом " & EtColor & "(ячейка " & Etalon.Address( 0 ,  0 ) & ") окрашены: " & stroka2
End Function

Поменяй на эту функцию или сам добавь строку
Код: plaintext
 Application.Volatile
И можно обновлять по нажатию <F9>


Не помогло....
Это никак не относится к твоей функции, просто есть заполненные ячейки в формате даты, а я меняю ее формат и какие-то ячейки обновляются, а какие-то остаются такими же, хотя я всем присвоил одинаковый формат
...
Рейтинг: 0 / 0
Нахождение ячеек определенного цвета в Range
    #34519636
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slice
Это никак не относится к твоей функции, просто есть заполненные ячейки в формате даты, а я меняю ее формат и какие-то ячейки обновляются, а какие-то остаются такими же, хотя я всем присвоил одинаковый формат

Ты блин поконкретнее спрашивай сразу и с примерами, тогда дело быстрее пойдёт!
Попробуй просто побольше описывать проблему!
Вот так попробуй
Код: plaintext
1.
2.
3.
4.
5.
6.
Sub Преобразовать_в_дату()
    Dim x As Range
    For Each x In Selection
     x.NumberFormat = "DD/MM/YYYY"
     x = Format(x, "0")
    Next x
End Sub
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Нахождение ячеек определенного цвета в Range
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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