Копирование ячеек в excel по цвету

Нужно выделить ячейки одного цвета в столбце екселя, скопировать, и перенести в другой столбец. При этом, не нарушая порядок при копировании, например, если выделены ячейки a34, a35 и a37, то при копировании допустим в столбик b они вставлялись на то же место, но не трогая ячейку b36 (a36).
Ищу уже весь день, все не то. Нашел макрос который копирует несмежные ячейки, но проблема в том что вставляет их по порядку. Есть ли какие-то надстройки с уже готовыми решениями?


  • Вопрос задан

    более трёх лет назад

  • 6390 просмотров

 

MDmitriy

Пользователь

Сообщений: 26
Регистрация: 18.04.2017

Доброго времени суток!

Excel 2010

Имеется таблица, состоящая из 8 (в дальнейшем — более 7) листов.
На 7 из 8 листов (помимо итогового) имеются строки с данными, окрашенными в основной зеленый цвет.
Требуется следующее: из 7 листов в 8 лист скопировать все ячейки из колонки «B», окрашенные только в зеленый цвет.
По возможности на 8 листе, после копирования ячеек из предыдущих семи, удалить дубликаты, если таковые будут иметь место (а такие будут, к сожалению).

Подскажите, как можно реализовать это в макросе?

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

Что считать за дубликат? По какому столбцу или набору столбцов?

 

kuklp

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

#3

18.04.2017 19:47:32

В модуль итогового листа:

Код
Public Sub www()
    Dim sh As Worksheet, i&
    For Each sh In ThisWorkbook.Worksheets
        For i = 2 To sh.UsedRange.Rows.Count
            If Not sh Is Me Then
                If sh.Cells(i, 2).Interior.ColorIndex = 43 Then
                    If Application.CountIf(Me.[a2].CurrentRegion, sh.Cells(i, 2).Value) = 0 Then _
                       sh.Cells(i, 2).Copy Me.Cells(Me.Rows.Count, 1).End(xlUp)(2, 1)
                End If
            End If
        Next
    Next
End Sub

Я сам — дурнее всякого примера! …

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

У меня тоже готово, но пока не знаю, какие строки считать дубликатами.

 

MDmitriy

Пользователь

Сообщений: 26
Регистрация: 18.04.2017

#5

19.04.2017 09:47:24

Цитата
Юрий М написал:
Что считать за дубликат? По какому столбцу или набору столбцов?

Здравствуйте, Юрий!
За дубликат считать одинаковые числовые значения на всех листах из колонки «B»

 

MDmitriy

Пользователь

Сообщений: 26
Регистрация: 18.04.2017

kuklp, ошибка при попытке выполнения
(скриншот во вложении)

Прикрепленные файлы

  • macros.png (63.78 КБ)

Изменено: MDmitriy19.04.2017 10:08:16

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#7

19.04.2017 12:13:00

Цитата
MDmitriy написал:
За дубликат считать одинаковые числовые значения на всех листах из колонки «B»

Но ведь имеются разные даты для одного и того же значения в столбце В. Как тут быть?
Посмотрите пока вариант без отбора уникальных и определитесь с признаком уникальности.
Дополнение: в моём варианте не используется проверка конкретного цвета заливки, а проверяется — есть заливка ячейки или нет. Т.е. заливка может быть любым цветом.

Прикрепленные файлы

  • Копирование ячеек по цветам 01.xlsm (30.02 КБ)

 

kuklp

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

#8

19.04.2017 12:34:38

Цитата
MDmitriy написал: ошибка при попытке выполнения

Вы точно

Цитата
kuklp написал: В модуль итогового листа

макрос вставили? Кнопку ткнуть осилите?

Прикрепленные файлы

  • Копирование ячеек по цветам.xlsm (28.28 КБ)

Я сам — дурнее всякого примера! …

 

MDmitriy

Пользователь

Сообщений: 26
Регистрация: 18.04.2017

kuklp, спасибо большое за помощь!
Но, к сожалению, при 60к+ значениях макрос «кладет» ОС наглухо. Все зависает, помогает только жесткая перезагрузка.  :sceptic:

Юрий М, здравствуйте !
Колонка «B» — номер материала (артикул)
Признак уникальности — номер (восьмизначный) в ячейке из столбца «B»
В Вашем варианте на итоговый лист «сливает» строчки целиком, не только колонку «B».

Изменено: MDmitriy19.04.2017 13:52:22

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#10

19.04.2017 13:56:41

Цитата
MDmitriy написал:
Колонка «B» — номер материала (артикул)
Признак уникальности — номер (восьмизначный) в ячейке из столбца «B»

Это я понял, но Вы никак не поймёте меня: в итоговой таблице, например, первые 5 строк имеют одинаковый номер — 30086408, но даты в столбце А разные. Какую из строк следует оставить?

Цитата
MDmitriy написал:
при 60к+ значениях…

Тогда и мой вариант нужно переделать на массивы.

 

MDmitriy

Пользователь

Сообщений: 26
Регистрация: 18.04.2017

Юрий М, извиняюсь, не до конца понял Вас.
Дата значения не играет, важна только уникальность восьмизначного номера артикула из колонки «B».

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

Вот уникальные.
И вопрос: лучше бы помечать строки не цветом, а каким-нибудь признаком в дополнительном столбце. Есть такая возможность? При больших объёмах исключили бы обращение к ячейкам на листе и макрос работал бы гораздо быстрее. В разы.

 

kuklp

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

#13

19.04.2017 14:15:39

И мое:

Код
Public Sub www()
    Dim sh As Worksheet, i&, a, d1 As Object
    Set d1 = CreateObject("scripting.dictionary")
    For Each sh In ThisWorkbook.Worksheets
        If Not sh Is Me Then
            For i = 2 To sh.UsedRange.Rows.Count
                If sh.Cells(i, 2).Interior.ColorIndex = 43 Then
                    d1(sh.Cells(i, 2).Value) = ""
                End If
            Next
        End If
    Next
    a = d1.keys
    ReDim b(1 To UBound(a) + 1, 1 To 1)
    For i = 0 To UBound(a): b(i + 1, 1) = a(i): Next
    Me.[a1].Resize(i) = b
End Sub

Я сам — дурнее всякого примера! …

 

kuklp

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

#14

19.04.2017 14:19:00

Юр, а зачем ты строки копируешь?

Цитата
MDmitriy написал:
в 8 лист скопировать все ячейки из колонки «B»

:)

Я сам — дурнее всякого примера! …

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

А как иначе? Залита — копирую. Но можно забирать в массив, а потом сбросить его на лист. Я же не знал, что в оригинале 60 000 строк )

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

Серж, понял тебя: нужно не всю строку, а только одну ячейку? Значит я невнимательно прочитал условия )

 

kuklp

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

А я все гадал, что ты все о датах спрашиваешь, когда нужен код материала(артикул)  :)

Я сам — дурнее всякого примера! …

 

MDmitriy

Пользователь

Сообщений: 26
Регистрация: 18.04.2017

kuklp, применить Ваш макрос ко всей книге или отдельно к листу?

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

Потому и спрашивал, что фактически уникальными получаются все )

 

kuklp

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

#20

19.04.2017 14:31:37

Который раз пишу

Цитата
kuklp написал:
В модуль итогового листа
Цитата
MDmitriy написал:
применить Ваш макрос ко всей книге или отдельно к листу?

— это как у Вас получится? Макрос перебирает все листы. :(

Я сам — дурнее всякого примера! …

 

MDmitriy

Пользователь

Сообщений: 26
Регистрация: 18.04.2017

kuklp,не получается :(
Не пойму никак, как добавить

 

kuklp

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

#22

19.04.2017 14:55:08

Цитата
MDmitriy написал:
Не пойму никак, как добавить

добавить что? Не можете код в модуль скопировать?

Прикрепленные файлы

  • Копирование ячеек по цветам.xlsm (27.5 КБ)

Я сам — дурнее всякого примера! …

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#23

19.04.2017 15:02:43

Если только из одного столбца, тогда такой вариант:

Код
Sub MacroCollector()
Dim LastRow As Long, i As Long, n As Long, Arr, Uniq As New Collection, x As Long, Material
    Application.ScreenUpdating = False
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    Range(Cells(2, 1), Cells(LastRow + 1, 1)).Clear
    For n = 1 To Sheets.Count
        With Sheets(n)
            If .Name <> ActiveSheet.Name Then
                LastRow = .Cells(Rows.Count, 1).End(xlUp).Row
                For i = 2 To LastRow
                    On Error Resume Next
                    If .Cells(i, 1).Interior.Color <> 16777215 Then Uniq.Add .Cells(i, 2), CStr(.Cells(i, 2))
                Next
            End If
        End With
    Next
    ReDim Arr(1 To Uniq.Count, 1 To 1)
    For Each Material In Uniq
        x = x + 1
        Arr(x, 1) = Material
    Next
    Range("A2").Resize(x, 1).Value = Arr
    Application.ScreenUpdating = True
End Sub

Прикрепленные файлы

  • Копирование ячеек по цветам 03.xlsm (30.31 КБ)

 

MDmitriy

Пользователь

Сообщений: 26
Регистрация: 18.04.2017

kuklp, работает!!! Спасибо!
Юрий М, вам, Юрий, тоже спасибо за предложенные варианты и уделенное время!

 

MDmitriy

Пользователь

Сообщений: 26
Регистрация: 18.04.2017

kuklp, Подскажите, если
Interior.ColorIndex = 43
а я знаю код цвета в RGB, на который необходимо поменять, как мне вычислить это число?

 

JayBhagavan

Пользователь

Сообщений: 11833
Регистрация: 17.01.2014

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

#26

19.04.2017 16:29:15

Код
Interior.Color=RGB(1,2,3)

Пишу по памяти. Могу ошибиться. Проверьте.
Ессно, вместо чисел подставьте свои.

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#27

19.04.2017 20:08:35

Цитата
MDmitriy написал:
я знаю код цвета в RGB, на который необходимо поменять, как мне вычислить это число?

А зачем? Почему не устраивает Interior.ColorIndex или просто Interior.Color?
Если же нужно узнать про перевод цвета в RGB, то это уже вопрос для другой темы.

 

MDmitriy

Пользователь

Сообщений: 26
Регистрация: 18.04.2017

Юрий М, здравствуйте!

В конечном итоге поменял на Interior.Color и задал необходимый цвет в RGB.

 

MDmitriy

Пользователь

Сообщений: 26
Регистрация: 18.04.2017

kuklp, добрый день!

Тестировал Ваш макрос, очень удобно!
Но обнаружил, что он удаляет дубликаты только в пределах одного конкретного листа, после чего добавляет «пачку» уникальных значений со следующего листа.
Подскажите, возможно ли дописать макрос так, что бы в итоге, после того, как все значения будут подобраны, уже с итогового листа удалялись дубликаты чисел?

 

kuklp

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

#30

21.04.2017 02:09:51

Цитата
MDmitriy написал:
удаляет дубликаты только в пределах одного конкретного листа

— не верю! Пример в студию, пожалуйста. Где в результате остались бы дубликаты.

Я сам — дурнее всякого примера! …

Иногда возникает необходимость изменить, определить цвет ячейки для копирования, закрасить определенную область, придав тем самым неповторимые и выразительные черты таблице данных.

В этой статье мы рассмотрим как вручную можно менять цвет ячейки, а так же как прописать в VBA изменение цвета диапазона ячеек или одной выделенной ячейки.

Начнем с простого. На главной панели инструментов ленты находится панель Формата Ячеек:

Excel панель инструментов-изменение ячеек

Для того, чтобы изменить цвет ячейки (диапазона ячеек) нам необходимо выделить ее, после чего на Панели инструментов выбрать необходимый цвет. Так же можно задать другие цвета, выбрав их из палитры. Панель инструментов меняет так же цвет текста, размер шрифта и формат границы ячейки.

Теперь зададим формат ячейки пользуясь контекстным меню, для чего кликнем правой кнопкой мыши на ячейке и в открывшемся списке выберем «Формат Ячеек»:

формат ячеек в excel

На вкладке «Заливка» можно выбрать цвет фона и узор.

Рассмотрим несколько иную ситуацию. Допустим вы хотите скопировать цвет ячейки (и формат) с существующей и применить к своим ячейкам. Воспользуемся кнопкой на главной панели «Формат по образцу» («метелочка»):

Excel формат по образцу

Таким образом, для того, чтобы скопировать формат необходимо выделить интересующую нас ячейку, нажать на «метелочку» и кликнуть по ячейке, формат которой мы хотим задать.

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

Задать цвет ячейке (A1 окрашивается в Желтый):

Sub Макрос2()
Range("A1").Select
With Selection.Interior
.Color = 65535
End With
End Sub

Скопировать формат ячейки (формат A1 копируется на A3):

Sub Макрос1()
Range("A1").Select
Selection.Copy
Range("A3").Select
Selection.PasteSpecial
Application.CutCopyMode = False
End Sub

Теперь комбинируя формат с операторами условия можно написать вычисления (например, суммирование) по условию цвета.

Будем благодарны, если Вы нажмете +1 и/или Мне нравится внизу данной статьи или поделитесь с друзьями с помощью кнопок ниже.

Спасибо.

Содержание

  • Копирование условного форматирования с помощью специальной вставки
  • Копирование условного форматирования с помощью Format Painter
  • Проблема при копировании условного форматирования

Условное форматирование в Excel позволяет быстро форматировать ячейку (или диапазон ячеек) на основе значения или текста в ней.

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

Если вам интересно узнать обо всех удивительных вещах, которые можно делать с условным форматированием, ознакомьтесь с этим руководством, в котором я показываю несколько полезных примеров условного форматирования.

После того, как вы установили правила условного форматирования для ячейки или диапазона ячеек, вы можете легко скопировать их в другие ячейки на том же или других листах.

В этом уроке я покажу вам как скопировать условное форматирование из одной ячейки в другую в Excel. Я расскажу о нескольких способах сделать это — таких как простое копирование и вставка, только условное форматирование с копированием и вставкой, а также с использованием средства рисования форматов.

Итак, приступим!

Копирование условного форматирования с помощью специальной вставки

Так же, как вы можете копировать и вставлять ячейки на одном листе или даже между листами или книгами, вы также можете копировать и вставлять условное форматирование из одной ячейки в другую.

Обратите внимание, что вы не можете просто скопировать и вставить ячейку. Вы должны убедиться, что вы копируете ячейку, но вставляете только правила условного форматирования в эту ячейку (а не все остальное, например значение или формулу).

И чтобы убедиться, что вы копируете и вставляете только условное форматирование, вам нужно использовать Специальную вставку.

Предположим, у вас есть набор данных, как показано ниже, где у меня есть условное форматирование, примененное к столбцу B (оценка по математике), чтобы все ячейки со значением более 80 были выделены.

Теперь, что, если я хочу применить то же правило условного форматирования ко второму столбцу (для оценки физики), чтобы все ячейки выше 80 были выделены зеленым цветом.

Это легко сделать!

Ниже приведены шаги по копированию условного форматирования из одной ячейки в другую:

  1. Выберите ячейку B2
  2. Щелкните правой кнопкой мыши и скопируйте его (или используйте сочетание клавиш Control + C)
  3. Выберите весь диапазон, в который вы хотите скопировать условное форматирование (C2: C11 в этом примере)
  4. Щелкните правой кнопкой мыши в любом месте выделения
  5. Нажмите на опцию Специальная вставка. Это откроет диалоговое окно Специальная вставка.
  6. В диалоговом окне Специальная вставка выберите Форматы.
  7. Нажмите ОК.

Вышеупомянутые шаги скопируют условное форматирование из столбца B и применит его к выбранным ячейкам в столбце C.

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

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

Копирование условного форматирования с помощью Format Painter

Format painter — это инструмент, который позволяет скопировать формат из ячейки (или диапазона ячеек) и вставить его.

А поскольку условное форматирование также является частью форматирования, вы также можете использовать средство рисования форматов, чтобы скопировать, а затем вставить его.

Предположим, у вас есть набор данных, показанный ниже, где я применил условное форматирование к столбцу Math Score, чтобы все ячейки со значением более 80 были выделены.

Ниже приведены шаги по использованию средства рисования форматов для копирования условного форматирования из столбца оценки математики и применения его к столбцу оценки физики:

  1. Выберите ячейку (или диапазон ячеек), из которой вы хотите скопировать условное форматирование
  2. Перейдите на вкладку «Главная»
  3. В группе «Буфер обмена» щелкните значок «Формат по образцу».
  4. Выделите все ячейки, к которым вы хотите применить скопированное условное форматирование.

Совет от профессионалов: если вы хотите скопировать условное форматирование и вставить его в несколько ячеек или диапазонов (которые нельзя выбрать за один раз), дважды щелкните значок «Форматирование по образцу». Это сохранит активную программу рисования форматов, и вы сможете вставить форматирование несколько раз (если только вы не нажмете клавишу Escape).

После того, как вы активировали средство рисования формата, вы можете использовать его на том же листе, на другом листе в той же книге и даже в другой книге.

Опять же, как и в случае со специальной вставкой, Format painter также копирует все форматирование (включая условное форматирование).

Проблема при копировании условного форматирования

В большинстве случаев у вас не возникнет проблем с копированием и вставкой условного форматирования из одной ячейки в другую.

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

Этот параметр позволяет создать собственную формулу, и форматирование применяется в формуле, возвращающей значение ИСТИНА для ячейки, и не применяется, когда формула возвращает ЛОЖЬ.

Если вы использовали формулу в условном форматировании, в которой используются абсолютные или смешанные ссылки, то при копировании она может работать не так, как ожидалось.

Например, в приведенном ниже примере я использовал формулу = $ B2> = 80, чтобы выделить все ячейки в столбце B, которые имеют значение выше 80.

Но когда я копирую это условное форматирование в столбец C, он по-прежнему ссылается на столбец B, и я получаю неправильный результат (как показано ниже).

Поэтому, если вы копируете условное форматирование из одной ячейки в другую и не получаете ожидаемого результата, лучше всего проверить используемую формулу и скорректировать ссылки.

Например, в этом случае я могу изменить формулу на = B2> = 80, и она должна работать нормально.

Если вам интересно, куда идет формула, перейдите на вкладку «Главная», а затем на «Условное форматирование».

В появившихся параметрах нажмите «Новое правило». В диалоговом окне «Новое правило форматирования» выберите параметр «Использовать формулу, чтобы определить, какие ячейки нужно форматировать.

Это покажет вам поле, в которое вы можете ввести формулу для выбранного диапазона. Если эта формула возвращает значение ИСТИНА для ячейки, она будет отформатирована, а если она вернет ЛОЖЬ, то нет.

Итак, это два простых способа, которые вы можете использовать для копирования условного форматирования из одной ячейки в другую в Excel — с помощью специальной вставки и средства рисования форматов.

И если вы видите проблемы с ним, проверьте используемую в нем формулу.

Надеюсь, вы нашли этот урок полезным!

Другие учебники по Excel могут оказаться полезными:

  • Выделение строк на основе значения ячейки в Excel (условное форматирование)
  • Выделите КАЖДУЮ СТРОКУ в Excel (используя условное форматирование)
  • Как удалить форматирование таблицы в Excel
  • Поиск и выделение данных с помощью условного форматирования
  • Как применить условное форматирование в сводной таблице в Excel
  • Выделите активную строку и столбец в диапазоне данных в Excel

Выбрать ячейки из столбца выделенные цветом и копировать

petyavova

Дата: Вторник, 15.08.2017, 23:19 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 32


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Существует итоговый файл в который ежемесячно копируется на новый лист
итоговая информация по контрагентам. На первом листе книги ведётся динамика изменений.
контрагенты прибавляются и отваливаются, соответственно
при копировании нового листа в итоговый файл они добавляются, но в динамике не участвуют.
в копируемом листе ячейка с ИНН контрагента выделена цветом.
Попытался с помощью присвоения переменной номера цвета, которым выделена ячейка с ИНН выделить и скопировать на страницу динамики в столбец ИНН, ничего не получилось.
Можете подсказать, как скопировать из второго листа все ИНН выделенные цветом на первый лист с добавлением отсутствующих.
образец примерный прилагаю.

К сообщению приложен файл:

4438333.xlsx
(12.4 Kb)

 

Ответить

iMrTidy

Дата: Среда, 16.08.2017, 15:48 |
Сообщение № 2

Группа: Пользователи

Ранг: Участник

Сообщений: 85


Репутация:

14

±

Замечаний:
0% ±


NO

petyavova, так подойдет?

К сообщению приложен файл:

4438333.xlsm
(27.2 Kb)


Вышенаписанное мной не является истиной, но лишь моя точка зрения, которая скорее всего ошибочна.

 

Ответить

petyavova

Дата: Среда, 16.08.2017, 18:33 |
Сообщение № 3

Группа: Пользователи

Ранг: Новичок

Сообщений: 32


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

iMrTidy, да кажется работает, щас проверю,
покрайней мере добавились, но помоему цвет решен не переменной,а постоянной величиной?
ещё не посмотрел, а пропавшие учитываются?

 

Ответить

iMrTidy

Дата: Среда, 16.08.2017, 20:21 |
Сообщение № 4

Группа: Пользователи

Ранг: Участник

Сообщений: 85


Репутация:

14

±

Замечаний:
0% ±


NO

petyavova, из Вашего описания я уловил только следующую поставленную задачу:

Можете подсказать, как скопировать из второго листа все ИНН выделенные цветом на первый лист с добавлением отсутствующих.

Представьте, что Вам нужно объяснить ребенку лет 7 поставленную задачу без ненужных деталей и как можно доступнее.

Что Вы понимаете под решить цвет переменной величиной?
Откуда берутся данные для величин, что должны исключаться?


Вышенаписанное мной не является истиной, но лишь моя точка зрения, которая скорее всего ошибочна.

 

Ответить

petyavova

Дата: Четверг, 17.08.2017, 16:29 |
Сообщение № 5

Группа: Пользователи

Ранг: Новичок

Сообщений: 32


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

iMrTidy, да, прошу прощения,не прав,
попытаюсь исправиться.
Подправил файл.
Цвет в ячейке с ИНН не гарантированно что будет одинаковым,
поэтому думаю разумнее присвоить переменную.
И не пойму в этом(пробном) файле если контрагент отвалился поставился ноль,
а в реальном пишет Н/Д , можете обьяснить почему?
Забыл, к добавленным ИНН в строке должны добавиться аналогичные формулы как у остальных.
Прикрепляю поправленный файлик.
надеюсь из него будет понятнее, спрашивайте…
очень вам признателен

К сообщению приложен файл:

4808867.xlsm
(24.4 Kb)

Сообщение отредактировал petyavovaЧетверг, 17.08.2017, 16:40

 

Ответить

iMrTidy

Дата: Четверг, 17.08.2017, 20:39 |
Сообщение № 6

Группа: Пользователи

Ранг: Участник

Сообщений: 85


Репутация:

14

±

Замечаний:
0% ±


NO

petyavova, цвет теперь берется из ячейки А1.

И не пойму в этом(пробном) файле если контрагент отвалился поставился ноль,
а в реальном пишет Н/Д , можете обьяснить почему?

Я не понимаю о чем Вы.

Забыл, к добавленным ИНН в строке должны добавиться аналогичные формулы как у остальных.

Я думаю, что будет лучше, если Вы оформите техническое задание, и за пару золотых Вам сделают все в лучшем виде.

К сообщению приложен файл:

9637679.xlsm
(27.1 Kb)


Вышенаписанное мной не является истиной, но лишь моя точка зрения, которая скорее всего ошибочна.

 

Ответить

petyavova

Дата: Понедельник, 21.08.2017, 21:17 |
Сообщение № 7

Группа: Пользователи

Ранг: Новичок

Сообщений: 32


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

iMrTidy, Я согласен, подскажите что нужно сделать?
но хотелось бы расшифровку, если можно?
При копировании новых ИНН в строке с новым ИНН должны подтянуться значения по
контрагенту, его имя и формулы подсчета(разницы по месяцам).

 

Ответить

iMrTidy

Дата: Четверг, 24.08.2017, 01:14 |
Сообщение № 8

Группа: Пользователи

Ранг: Участник

Сообщений: 85


Репутация:

14

±

Замечаний:
0% ±


NO

petyavova, комментарии к коду.
Данные для «подтягивания» либо формулами, либо переписывать код. В текущем варианте код не рассчитан на это. Если бы такая задача стояла изначально, возможно, лучше было бы сделать внутренний запрос sql.

К сообщению приложен файл:

5983173.xlsm
(26.2 Kb)


Вышенаписанное мной не является истиной, но лишь моя точка зрения, которая скорее всего ошибочна.

 

Ответить

petyavova

Дата: Четверг, 24.08.2017, 14:19 |
Сообщение № 9

Группа: Пользователи

Ранг: Новичок

Сообщений: 32


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

iMrTidy, Да, именно формулами, в файлике я добавил формулы, но
они должны копироваться в строку с появлением нового ИНН.
Спасибо за комментарии, теперь первоклашке стало более менее понятно :-)
И как исправить? в определении последней строки, последней считается последняя
используемая. Объясните, что это значит? Значения подставляются не к последней строке.
И как раз появились Н/Д про которые я говорил. Как их превратить в «0».

 

Ответить

iMrTidy

Дата: Четверг, 24.08.2017, 15:16 |
Сообщение № 10

Группа: Пользователи

Ранг: Участник

Сообщений: 85


Репутация:

14

±

Замечаний:
0% ±


NO

petyavova, чтобы копировались, то только макросом, если просто отображаться с другого листа без Н/Д, то

Вам поможет.

К сообщению приложен файл:

6387401.xlsm
(26.7 Kb)


Вышенаписанное мной не является истиной, но лишь моя точка зрения, которая скорее всего ошибочна.

Сообщение отредактировал iMrTidyЧетверг, 24.08.2017, 15:16

 

Ответить

petyavova

Дата: Четверг, 24.08.2017, 17:16 |
Сообщение № 11

Группа: Пользователи

Ранг: Новичок

Сообщений: 32


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

iMrTidy, Круто, а чтобы оставить при Н/Д бывшее значение? (название фирмы?)
но ИНН всё равно подставляются не понятно куда?
и что добавить в макрос чтоб захватывал формулы?

Сообщение отредактировал petyavovaЧетверг, 24.08.2017, 17:20

 

Ответить

iMrTidy

Дата: Пятница, 25.08.2017, 00:01 |
Сообщение № 12

Группа: Пользователи

Ранг: Участник

Сообщений: 85


Репутация:

14

±

Замечаний:
0% ±


NO

а чтобы оставить при Н/Д бывшее значение? (название фирмы?)

Только макросом.

но ИНН всё равно подставляются не понятно куда?

Последний ряд определяется при помощи Используемого Диапазона, а не по последней непустой ячейке колонки с ИНН.

и что добавить в макрос чтоб захватывал формулы?

Расширить диапазон для проверки и копирования. Добавить в коллекцию дополнительные значения. Отдебажить, внести правки при необходимости.


Вышенаписанное мной не является истиной, но лишь моя точка зрения, которая скорее всего ошибочна.

 

Ответить

petyavova

Дата: Пятница, 25.08.2017, 01:06 |
Сообщение № 13

Группа: Пользователи

Ранг: Новичок

Сообщений: 32


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

iMrTidy,

Последний ряд определяется при помощи Используемого Диапазона, а не по последней непустой ячейке колонки с ИНН.

Вам просто говорить, а как сделать по последней строчке?

Расширить диапазон для проверки и копирования. Добавить в коллекцию дополнительные значения. Отдебажить, внести правки при необходимости.

Легко сказать, отдебажить..
Подскажите неучу..

 

Ответить

iMrTidy

Дата: Пятница, 25.08.2017, 10:02 |
Сообщение № 14

Группа: Пользователи

Ранг: Участник

Сообщений: 85


Репутация:

14

±

Замечаний:
0% ±


NO

petyavova,
Последняя строка: тут и тут обсуждалось. Уверен, если поискать, то можно найти еще.

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


Вышенаписанное мной не является истиной, но лишь моя точка зрения, которая скорее всего ошибочна.

 

Ответить

K-SerJC

Дата: Пятница, 25.08.2017, 10:47 |
Сообщение № 15

Группа: Проверенные

Ранг: Обитатель

Сообщений: 487


Репутация:

86

±

Замечаний:
0% ±


Excel 2013

Легко сказать, отдебажить..

вариантов то немного на самом деле, разобраться самому опираясь на описанные здесь подсказки
или попросить кого то решить за вас вашу проблему, но это уже в другой ветке форума.
одно дело подсказать ответ на конкретный вопрос, направить так сказать, и совсем другое сделать вам готовое решение…


Благими намерениями выстелена дорога в АД.

 

Ответить

petyavova

Дата: Пятница, 25.08.2017, 16:14 |
Сообщение № 16

Группа: Пользователи

Ранг: Новичок

Сообщений: 32


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

K-SerJC, выбирал, выбирал, вроде выводит но при активации ячейки копирования выдает ошибку 1004
[vba]

Код

Sub CheckList()
    Dim sh As Worksheet
    Dim sh1 As Worksheet
    Dim rCOunt As Long
    Dim i
    Dim myColor
    Dim myCell
    Dim newCell
Set sh = Sheets(2)
Set sh1 = Sheets(1)
With sh
rCOunt = .Cells(.Rows.Count, 1).End(xlUp).Row
myColor = sh.Range(«D9»).Interior.Color
For i = 26 To rCOunt
If .Cells(i, «D»).Interior.Color = myColor Then
Set myCell = sh1.Range(«B:B»).Find(.Cells(i, «D»))
If myCell Is Nothing Then Set newCell = (.Cells(i, «D»))

          If newCell <> 0 Then
    ‘MsgBox (newCell & » вставить в Лист1″)
     ‘newCell.Copy
     ‘Selection.Copy
     MsgBox (newCell)
     Sheets(«Динамика»).Select
     Range(«B7»).Select
     newCell.Insert Shift:=xlDown
      End If
    End If
    Next i
    End With
    Set sh = Nothing
    Set sh1 = Nothing

      End Sub

[/vba]
не могу скопировать значение в ячейку не говоря уже о последней строчке.
Почему [vba][/vba] не выбирается?
если закомментировать, то проходит и вставляется по моему на исходный лист.

К сообщению приложен файл:

2111664.xlsm
(35.0 Kb)

Сообщение отредактировал petyavovaПятница, 25.08.2017, 19:52

 

Ответить

petyavova

Дата: Суббота, 26.08.2017, 16:20 |
Сообщение № 17

Группа: Пользователи

Ранг: Новичок

Сообщений: 32


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Получилось скопировать.[vba]

Код

Sub AddNewINN()
    Dim sh As Worksheet
    Dim sh1 As Worksheet
    Dim rCOunt As Long
    Dim i
    Dim myColor
    Dim myCell
    Dim newCell
    Dim lastrow As Long

    Set sh = Sheets(2)
Set sh1 = Sheets(1)
‘ lastrow = Sheets(«Динамика»).Range(«A65536»).End(xlUp).Row
With sh
rCOunt = .Cells(.Rows.Count, 1).End(xlUp).Row
myColor = sh.Range(«D9»).Interior.Color
For i = 9 To rCOunt
If .Cells(i, «D»).Interior.Color = myColor Then
Set myCell = sh1.Range(«B:B»).Find(.Cells(i, «D»))
If myCell Is Nothing Then Set newCell = (.Cells(i, «D»))

          If newCell <> 0 Then
         Sheets(«Динамика»).Select
          lastrow = Sheets(«Динамика»).Range(«A65536»).End(xlUp).Row
     Range(«A» & lastrow).Select
     ActiveCell.EntireRow.Select
     Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    MsgBox (newCell & » копировать в Лист1″)
    Range(«B» & lastrow).Select
      newCell.Copy ‘Destination:=Sheets(«Динамика»).Range(«B» & lastrow)
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
      End If
    End If
    Next i
    End With
    Set sh = Nothing
    Set sh1 = Nothing
      End Sub

[/vba]
но теперь надо вставить формулы

К сообщению приложен файл:

3626199.xlsm
(33.7 Kb)

Сообщение отредактировал petyavovaСуббота, 26.08.2017, 16:21

 

Ответить

KuklP

Дата: Суббота, 26.08.2017, 17:05 |
Сообщение № 18

Группа: Проверенные

Ранг: Старожил

Сообщений: 2369


Репутация:

486

±

Замечаний:
0% ±


2003-2010

Попробуйте вместо:
[vba]

Код

If newCell <> 0 Then
Sheets(«Динамика»).Select
lastrow = Sheets(«Динамика»).Range(«A65536»).End(xlUp).Row
Range(«A» & lastrow).Select
ActiveCell.EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
MsgBox (newCell & » копировать в Лист1″)
Range(«B» & lastrow).Select
newCell.Copy ‘Destination:=Sheets(«Динамика»).Range(«B» & lastrow)
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If

[/vba]
так:
[vba]

Код

                If newCell <> 0 Then
                    lastrow = sh1.Range(«A65536»).End(xlUp).Row
                    sh1.Rows(lastrow — 1).Copy
                    sh1.Rows(lastrow).Insert xlDown, xlFormatFromLeftOrAbove
                    sh1.Range(«B» & lastrow).Value = newCell.Value
                    Application.CutCopyMode = 0
                End If

[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728

 

Ответить

petyavova

Дата: Воскресенье, 27.08.2017, 09:30 |
Сообщение № 19

Группа: Пользователи

Ранг: Новичок

Сообщений: 32


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

KuklP, Ругается: Variable not defined.
а в оригинальном файле ругается по другому:
ошибка 424 Object required.
Подскажите почему, и как исправить.
На вид вроде правильный скрипт.

 

Ответить

KuklP

Дата: Воскресенье, 27.08.2017, 09:38 |
Сообщение № 20

Группа: Проверенные

Ранг: Старожил

Сообщений: 2369


Репутация:

486

±

Замечаний:
0% ±


2003-2010

Кнопку ткнуть осилите?


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728

 

Ответить

Понравилась статья? Поделить с друзьями:

А вот еще интересные статьи:

  • Копирование ячеек в excel в автозаполнение
  • Копирование ячеек в excel без сдвига
  • Копирование формул в ячейках в таблицах excel
  • Копирование формул в ячейках в excel на другой лист
  • Копирование формул в таблице word

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии