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

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

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2018, 15:54   #1
Emmelman
Пользователь
 
Регистрация: 27.11.2012
Сообщений: 84
Восклицание Поиск значений по таблице и заливка цветом

Дорогие форумчане, нужен ваш совет.

Есть такая задача:
1. Один файл Excel. Три листа, на первом располагается Таблица А. В ней есть номера счетов, в столбце Line сode и значения, в двух столбцах - Таблица Б1, Таблица Б2. Значения есть в не каждой строчке, также только некоторые залиты цветом - зеленым/бежевым.
2. В файле, на листах "Таблица Б1" и "Таблица Б2", есть столбцы Счет 1 и Счет 2 соответственно (данные в них идентичны), необходимо подсвятить те счета (или ячейки рядом) на этих листах, которые закрашены на листе Таблица А в зеленый или бежевый цвет, в соответствии с названием столбца и листа.
3. В результате на листе "Таблица Б1" будут закрашены ячейки, которые закрашены в столбце Таблица Б1, на листе "Таблица Б2" будут закрашены из столбца Таблица Б2.

Идея реализации у меня была следующая - функцией ВПР подтянуть значения, в выбранном диапазоне провести поиск - есть ли заливка? Если есть, закрашиваем соответствующим цветом, но как это реализовать - ума не приложу, пока рою интернет в поиске примера.
Также есть проблема с двумерностью массива, можно было бы упростить задачу, разбив Таблицу А на две и делать поиск раздельно.

Пример я приложил,в нем есть некоторые макросы, которые я думал использовать - цикл по листам, формула с ВПРом по цвету, которую нашел в сети.

Буду благодарен за помощь и совет. Заранее спасибо!
Вложения
Тип файла: xlsx Задача.xlsx (2.06 Мб, 10 просмотров)
Emmelman вне форума Ответить с цитированием
Старый 22.03.2018, 15:59   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Цитата:
Сообщение от Emmelman Посмотреть сообщение
Пример я приложил,в нем есть некоторые макросы
где? Файл правда не смотрел, может там текстом на листе конечно...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 22.03.2018, 16:09   #3
Emmelman
Пользователь
 
Регистрация: 27.11.2012
Сообщений: 84
По умолчанию

Примеры таблиц и заливки в файле. Код, который я наковырял - тоже в файле. Но там есть кое-что лишнее, т.к. фактический файл немного другой, тут же очень упрощенный вариант.

Мне кажется, что можно сделать свою функцию ВПР, в рамках которой каким-то образом искать цвет во втором столбце. Честно не представляю как это сделать пока что. ВПР же ищет по первому столбцу, а цвет - во втором, получается можно вывести значение второго столбца (что легко, это же стандарный функционал формулы) и одновременно достать его цвет.
Emmelman вне форума Ответить с цитированием
Старый 22.03.2018, 17:26   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Свою ВПР можно написать какую угодно, главно чтоб название с стандартной не совпадало.
По поводу кода в xlsx - невозможно. Ну конечно если расширение вручную не меняли.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 23.03.2018, 08:46   #5
Emmelman
Пользователь
 
Регистрация: 27.11.2012
Сообщений: 84
По умолчанию

мой косяк, код внутри вот такой, первая часть будет нужна для фактического файла. Нашел функцию с впр, но она не совсем подходит и не работает в двумерном массиве..

Код:

Sub Отделение_счета()
'
' Отделение_счета
'

'
Dim sh As Worksheet

For Each sh In ActiveWorkbook.Sheets 'цикл по всем листам книги Excel

    sh.Activate
        sh.Columns("A:A").Select
    Selection.Insert Shift:=xlToRight 'вставляем столбец слева
    sh.Range("A6").Select
    ActiveCell.FormulaR1C1 = "=LEFT(RC[1],3)" ' вставляем формулу
    sh.Range("A6").Select
    Selection.AutoFill Destination:=Range("A6:A3684") ' протягиваем формула
    sh.Range("A6:A3684").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,     SkipBlanks _
        :=False, Transpose:=False ' копируем-вставляем, чтобы стали значения
    sh.Range("H9").Select
    ActiveCell.FormulaR1C1 = _
        "=vlookup(RC[-7],'[SCP_3Q2017.xlsm]Существенные счета'!C3:C11,9,0)"
     
    'ActiveCell.FormulaR1C1 = "=ВПР_Цвет(RC[-6],RC[-4]:R[7]C[-2],1,0)"
Next sh

End Sub

Function ВПР_Цвет(SearchValue As Range, Table As Range, SearchColumnNum As Long)
'функция подтягивает значения, если они в таблице помечены цветом
'SearchValue - ссылка на искомое значение
'Table - таблица (как у ВПР)
'SearchColumnNum - номер столбца таблицы, из которого возвращаем значения
    Application.Volatile
        Dim i As Long
    'Set Table = Table.Parent.UsedRange
    For i = 1 To Table.Rows.Count
        If Table.Cells(i, 1) = SearchValue And Table.Cells(i, 1).Interior.ColorIndex <> xlNone Then
         
         'If Table.Cells(i, 1) = SearchValue Then
        ВПР_Цвет = Table.Cells(i, SearchColumnNum): Exit For
    Next i
End Function
Emmelman вне форума Ответить с цитированием
Старый 23.03.2018, 10:02   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Цитата:
Сообщение от Emmelman Посмотреть сообщение
и не работает в двумерном массиве
и не должна - какой цвет в массиве? Она работает с ячейками листа.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 23.03.2018, 10:35   #7
Emmelman
Пользователь
 
Регистрация: 27.11.2012
Сообщений: 84
По умолчанию

Цвет зеленый и желтый
Emmelman вне форума Ответить с цитированием
Старый 23.03.2018, 10:39   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Это ответ на вопрос "какой цвет в массиве"? Это был не вопрос
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заливка цветом фигуры kovich7 Microsoft Office Excel 2 26.05.2016 15:13
Поиск определенных значений в таблице Alchi09 SQL, базы данных 24 06.09.2012 18:13
Автоматический поиск значений в таблице Freesty1er Microsoft Office Excel 11 31.10.2011 22:44
заливка цветом строк ivan52agronom Microsoft Office Excel 12 13.02.2010 23:10
Заливка определённым цветом? M17 Microsoft Office Excel 2 03.04.2009 12:45