Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Выделение одинаковых последовательных значений в столбцах. - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Выделение одинаковых последовательных значений в столбцах.
wetri Дата: Суббота, 04.01.2014, 14:07 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Приветствую парни.
Будьте добры, помогите реализовать данную задачу.
Есть диапазон ячеек А1:А100 – ALP1:ALP100, то есть 999столцов и 100строк, вообще строк может быть и 200 и 300 тд.
В каждой ячейке для своего столбца есть одно значение из четырех возможных: (+) (-) (=) (0)
В каждом столбце нужно произвести просмотр с низу в верх или наоборот главное что бы просмотр был по столбцам, найти ячейки в которых есть одинаковые последовательные значения например значения плюса:
если значений (+) 5-ть, то выделить их в желтый цвет;
если значений (+) 6-ть, то выделить их в зеленый цвет;
если значений (+) 7-мь, выделить их в оранжевый цвет;
если значений (+) 8-мь, то выделить их в красный цвет;
если значений (+) 9-ть и более, выделить в синий цвет.
Пробовал все это сделать условным форматированием, не получается!
Заранее спасибо за помощь.
В примере кусок диапазона с выделенными значениями в ручную.
К сообщению приложен файл: test.xlsx (96.9 Kb)
 
Ответить
СообщениеПриветствую парни.
Будьте добры, помогите реализовать данную задачу.
Есть диапазон ячеек А1:А100 – ALP1:ALP100, то есть 999столцов и 100строк, вообще строк может быть и 200 и 300 тд.
В каждой ячейке для своего столбца есть одно значение из четырех возможных: (+) (-) (=) (0)
В каждом столбце нужно произвести просмотр с низу в верх или наоборот главное что бы просмотр был по столбцам, найти ячейки в которых есть одинаковые последовательные значения например значения плюса:
если значений (+) 5-ть, то выделить их в желтый цвет;
если значений (+) 6-ть, то выделить их в зеленый цвет;
если значений (+) 7-мь, выделить их в оранжевый цвет;
если значений (+) 8-мь, то выделить их в красный цвет;
если значений (+) 9-ть и более, выделить в синий цвет.
Пробовал все это сделать условным форматированием, не получается!
Заранее спасибо за помощь.
В примере кусок диапазона с выделенными значениями в ручную.

Автор - wetri
Дата добавления - 04.01.2014 в 14:07
SkyPro Дата: Суббота, 04.01.2014, 14:38 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Так?
К сообщению приложен файл: test.xlsm (29.3 Kb)


skypro1111@gmail.com

Сообщение отредактировал SkyPro - Суббота, 04.01.2014, 14:39
 
Ответить
СообщениеТак?

Автор - SkyPro
Дата добавления - 04.01.2014 в 14:38
ikki Дата: Суббота, 04.01.2014, 14:56 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
эх, опередили :D
ну, всё равно - вариант:
[vba]
Код
Sub t()
     Dim r As Object, m As Object, c As Range, s$, xColor&, a
     a = Array(vbYellow, vbGreen, vbMagenta, vbRed, vbBlue)
     Set r = CreateObject("vbscript.regexp")
     r.Global = True: r.Pattern = "\+{5,}"
     For Each c In [a1].CurrentRegion.Columns
         s = Join(Application.Transpose(c), ""): Set m = r.Execute(s)
         If m.Count Then
             For i = 0 To m.Count - 1
                 If m(i).Length >= 9 Then xColor = vbBlue Else xColor = a(m(i).Length - 5)
                 c.Cells(m(i).FirstIndex + 1).Resize(m(i).Length).Interior.Color = xColor
             Next
         End If
     Next
End Sub
[/vba]


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki


Сообщение отредактировал ikki - Суббота, 04.01.2014, 15:02
 
Ответить
Сообщениеэх, опередили :D
ну, всё равно - вариант:
[vba]
Код
Sub t()
     Dim r As Object, m As Object, c As Range, s$, xColor&, a
     a = Array(vbYellow, vbGreen, vbMagenta, vbRed, vbBlue)
     Set r = CreateObject("vbscript.regexp")
     r.Global = True: r.Pattern = "\+{5,}"
     For Each c In [a1].CurrentRegion.Columns
         s = Join(Application.Transpose(c), ""): Set m = r.Execute(s)
         If m.Count Then
             For i = 0 To m.Count - 1
                 If m(i).Length >= 9 Then xColor = vbBlue Else xColor = a(m(i).Length - 5)
                 c.Cells(m(i).FirstIndex + 1).Resize(m(i).Length).Interior.Color = xColor
             Next
         End If
     Next
End Sub
[/vba]

Автор - ikki
Дата добавления - 04.01.2014 в 14:56
wetri Дата: Суббота, 04.01.2014, 15:00 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Спасибо за помощь.
Немного не так, нужно твердо указать какое значение выделять, как я понимаю сейчас выделяется любое последовательное значение а нужно именно только (+) ?
Нужно, что бы я сам менял значение нужного мне значения в макросе.
В примере видно, что в столбце AW есть выделение, но из за того что там и + и - по шесть штук то он весь окрасился в зеленый - это неправильно.
А так в логике все правильно.
 
Ответить
СообщениеСпасибо за помощь.
Немного не так, нужно твердо указать какое значение выделять, как я понимаю сейчас выделяется любое последовательное значение а нужно именно только (+) ?
Нужно, что бы я сам менял значение нужного мне значения в макросе.
В примере видно, что в столбце AW есть выделение, но из за того что там и + и - по шесть штук то он весь окрасился в зеленый - это неправильно.
А так в логике все правильно.

Автор - wetri
Дата добавления - 04.01.2014 в 15:00
wetri Дата: Суббота, 04.01.2014, 15:06 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Все мужики спасибо за помощь!
Второй вариант, то что надо.
hands
 
Ответить
СообщениеВсе мужики спасибо за помощь!
Второй вариант, то что надо.
hands

Автор - wetri
Дата добавления - 04.01.2014 в 15:06
SkyPro Дата: Суббота, 04.01.2014, 15:06 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Спасибо за помощь.

Уместнее говорить "..за решение".
Вот с возможностью выбора.
К сообщению приложен файл: 0119999.xlsm (30.0 Kb)


skypro1111@gmail.com
 
Ответить
Сообщение
Спасибо за помощь.

Уместнее говорить "..за решение".
Вот с возможностью выбора.

Автор - SkyPro
Дата добавления - 04.01.2014 в 15:06
ikki Дата: Суббота, 04.01.2014, 15:06 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
у меня именно плюсики красятся B)


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениеу меня именно плюсики красятся B)

Автор - ikki
Дата добавления - 04.01.2014 в 15:06
wetri Дата: Воскресенье, 19.01.2014, 12:50 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Вопрос о мелкой модернизации макроса...
Оба решения работают. Макрос от SkyPro - гибче, в силу того, что можно в форме менять значения искомых символов.
Можно ли в форме "выбора символов" сделать так, что бы возможно было выбирать несколько символов одновременно, например (=) и (-)?
В макросе от ikki - переменная object содержит r.Pattern = "\+{5,}" Тот же вопрос как объединить два символа для поиска (=) и (-)?
То есть эти два символа как бы объединить в один, сохраняя все прежние условия для выделения.
 
Ответить
СообщениеВопрос о мелкой модернизации макроса...
Оба решения работают. Макрос от SkyPro - гибче, в силу того, что можно в форме менять значения искомых символов.
Можно ли в форме "выбора символов" сделать так, что бы возможно было выбирать несколько символов одновременно, например (=) и (-)?
В макросе от ikki - переменная object содержит r.Pattern = "\+{5,}" Тот же вопрос как объединить два символа для поиска (=) и (-)?
То есть эти два символа как бы объединить в один, сохраняя все прежние условия для выделения.

Автор - wetri
Дата добавления - 19.01.2014 в 12:50
wetri Дата: Вторник, 21.01.2014, 23:25 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
И возможно ли это вообще сделать?
 
Ответить
СообщениеИ возможно ли это вообще сделать?

Автор - wetri
Дата добавления - 21.01.2014 в 23:25
ikki Дата: Воскресенье, 06.04.2014, 18:09 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
я вот не понял новых условий
интересует вариант с одним и тем же символом?
или разными из допустимого списка?
т.е. последовательность "-++-+" - это нужная последоваельность из 5 символов?
или только "-----" и "+++++" по отдельности?


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениея вот не понял новых условий
интересует вариант с одним и тем же символом?
или разными из допустимого списка?
т.е. последовательность "-++-+" - это нужная последоваельность из 5 символов?
или только "-----" и "+++++" по отдельности?

Автор - ikki
Дата добавления - 06.04.2014 в 18:09
wetri Дата: Воскресенье, 06.04.2014, 21:15 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Условия такие - в примере test.xlsx, столбец СМ, начинать просмотр нужно снизу, там идут (= - = - 0) их нужно покрасить в желтый, так как эта цепочка(список) состоит из 5 символов.
Знак (+) - он отдельный символ от остальных, смешивать с остальными его нельзя и красить его не нужно!
Еще пример: столбец "O" 23 строка, опять просмотр снизу (= - 0 - - -) эту цепочку нужно покрасить в зеленый и тд.
Если встречаются символы в любой последовательности (= - 0) то считать их как за один.
Символ (+) красить не нужно, я же для плюса могу использовать старый макрос.
Если возможно, в одном макросе сделать выбор нужных символов для выделения из списка, то это вообще будет СУПЕР!
Уфф, надеюсь Вы мою логику поймете.. :)


Сообщение отредактировал wetri - Воскресенье, 06.04.2014, 21:22
 
Ответить
СообщениеУсловия такие - в примере test.xlsx, столбец СМ, начинать просмотр нужно снизу, там идут (= - = - 0) их нужно покрасить в желтый, так как эта цепочка(список) состоит из 5 символов.
Знак (+) - он отдельный символ от остальных, смешивать с остальными его нельзя и красить его не нужно!
Еще пример: столбец "O" 23 строка, опять просмотр снизу (= - 0 - - -) эту цепочку нужно покрасить в зеленый и тд.
Если встречаются символы в любой последовательности (= - 0) то считать их как за один.
Символ (+) красить не нужно, я же для плюса могу использовать старый макрос.
Если возможно, в одном макросе сделать выбор нужных символов для выделения из списка, то это вообще будет СУПЕР!
Уфф, надеюсь Вы мою логику поймете.. :)

Автор - wetri
Дата добавления - 06.04.2014 в 21:15
ikki Дата: Воскресенье, 06.04.2014, 22:42 | Сообщение № 12
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
ну, если правильно понял - в моём коде надо использовать другой шаблон: [vba]
Код
r.Pattern = "[-=0]{5,}"
[/vba]всё остальное то же самое.

пс. если нужно использовать другой перечень символов, принимаемых "за один", просто измените шаблон, указав эти символы внутри квадратных скобок. важно! если среди этих символов будет "-", его нужно указывать либо первым (как в моём примере), либо последним, иначе он будет иметь другой смысл. кроме того, есть ещё оговорки насчёт символа "^", но, надеюсь, он у вас не встретится :)


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki


Сообщение отредактировал ikki - Воскресенье, 06.04.2014, 22:50
 
Ответить
Сообщениену, если правильно понял - в моём коде надо использовать другой шаблон: [vba]
Код
r.Pattern = "[-=0]{5,}"
[/vba]всё остальное то же самое.

пс. если нужно использовать другой перечень символов, принимаемых "за один", просто измените шаблон, указав эти символы внутри квадратных скобок. важно! если среди этих символов будет "-", его нужно указывать либо первым (как в моём примере), либо последним, иначе он будет иметь другой смысл. кроме того, есть ещё оговорки насчёт символа "^", но, надеюсь, он у вас не встретится :)

Автор - ikki
Дата добавления - 06.04.2014 в 22:42
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!