Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Нахождение ячеек определенного цвета в Range / 16 сообщений из 16, страница 1 из 1
08.05.2007, 11:54:50
    #34511950
Slice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нахождение ячеек определенного цвета в Range
Добрый день
Нужно определить ячейки определенного цвета из известного Range и разложить их по столбцам


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

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

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

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


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

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

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

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


KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
09.05.2007, 12:49:39
    #34514475
Slice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нахождение ячеек определенного цвета в Range
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
09.05.2007, 12:51:28
    #34514476
Slice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нахождение ячеек определенного цвета в Range
Ошибочка

Код: 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
10.05.2007, 10:31:21
    #34515382
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нахождение ячеек определенного цвета в Range
Slice
До этого я и сам дошел, а как сделать так, чтобы он не перечислял, что в диапазоне найдены ячейки из разных столбцов одного цвета, а писал типа так:
вдиапазоне A1J10 в столбце A красная A1, в столбце B - B3,B4 и так далее.

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

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

Посмотри файл, но там есть недостаток который я указал. Поэтому сам смотри как им пользоваться!
...
Рейтинг: 0 / 0
10.05.2007, 11:15:36
    #34515547
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нахождение ячеек определенного цвета в Range
Вот функция, только одно ограничение 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
10.05.2007, 13:10:31
    #34516051
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нахождение ячеек определенного цвета в Range
Вот теперь всё нормально:

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
11.05.2007, 09:51:23
    #34518090
Slice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нахождение ячеек определенного цвета в Range
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
11.05.2007, 11:24:05
    #34518447
Slice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нахождение ячеек определенного цвета в Range
Еще вопросик в догонку..... Почему при изменение формата данных в ячейках, не все принимают этот формат? приходится в каждую из них дабл кликом заходить, как через VBA попросить эксель принимать нужный формат во всех ячейках?
...
Рейтинг: 0 / 0
11.05.2007, 11:56:18
    #34518585
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нахождение ячеек определенного цвета в Range
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
11.05.2007, 14:12:22
    #34519248
Slice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нахождение ячеек определенного цвета в Range
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
11.05.2007, 15:35:28
    #34519636
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нахождение ячеек определенного цвета в Range
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
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Нахождение ячеек определенного цвета в Range / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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