Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 След.
Столбцы из разных листов в один столбец
 
Как вариант другой макрос который объединяет данные с разных листов в один:
Код
Sub Combine()
'UpdatebyExtendoffice20180205
    Dim I As Long
    Dim xRg As Range
    On Error Resume Next
    Worksheets.Add Sheets(1)
    ActiveSheet.Name = "Combined"
   For I = 2 To Sheets.Count
        Set xRg = Sheets(1).UsedRange
        If I > 2 Then
            Set xRg = Sheets(1).Cells(xRg.Rows.Count + 1, 1)
        End If
        Sheets(I).Activate
        ActiveSheet.UsedRange.Copy xRg
    Next
End Sub
Столбцы из разных листов в один столбец
 
Макрос: можно с одного листа объединить все столбцы в один.
Код
Sub CopyFilledRows()    On Error Resume Next
    r = 1
    With Sheets(2)
        For Each c In Intersect(Selection, ActiveSheet.UsedRange).Cells
            If c <> "" Then
                .Cells(r, 1) = c
                r = r + 1
            End If
        Next
    End With
End Sub

Для того чтоб сработало нужно: 1) все нужные столбцы копируете на лист1, создаёте лист2, 2) на листе1 выделяете курсором все нужные столбцы и запускаете макрос. В итоге на листе2 в столбце А:А будут данные со всех столбцов выделенных на листе1  
Преобразование формулы СЧЁТЕСЛИ, находящей дубли, в макрос, Формула ищет дубли в столбце, но когда много ячеек работает очень долго, макрос ускорит процесс
 
Msi2102, мощно даже очень.  
Преобразование формулы СЧЁТЕСЛИ, находящей дубли, в макрос, Формула ищет дубли в столбце, но когда много ячеек работает очень долго, макрос ускорит процесс
 
Цитата
написал:
очень долго
Думаю в компе дело, не самые мощные машины стоят. Спасибо за совет.  
Преобразование формулы СЧЁТЕСЛИ, находящей дубли, в макрос, Формула ищет дубли в столбце, но когда много ячеек работает очень долго, макрос ускорит процесс
 
Msi2102 и kain, большое спасибо за Ваши решения, всё работает
Макрос Msi2102 просчитал диапазон А2:А159433 за секунд 35-40.
Jack Famous, буду разбираться), спасибо за помощь.  
Преобразование формулы СЧЁТЕСЛИ, находящей дубли, в макрос, Формула ищет дубли в столбце, но когда много ячеек работает очень долго, макрос ускорит процесс
 
Jack Famous, Здравствуйте. Ещё как может, когда перебирает 700 000 ячеек плюс минус. Конечно несколько функций - сколько ячеек для проверки столько и формул в соседнем столбце т.н 700 000 ячеек в А:А и напротив каждой формула СЧЁТЕСЛИ.  
Изменено: zvolkz - 22.06.2022 10:58:29
Преобразование формулы СЧЁТЕСЛИ, находящей дубли, в макрос, Формула ищет дубли в столбце, но когда много ячеек работает очень долго, макрос ускорит процесс
 
Здравствуйте. Есть формула
Код
=СЧЁТЕСЛИ(A:A;A2)>1

она ищет дубли в столбце А:А, если значение в ячейке имеет дубликат то формула пишет в столбце В:В ИСТИНА, а если значение в ячейке уникальное то ЛОЖЬ.
Формула хорошо работает когда ячеек для проверки несколько тысяч, но с десятками тысяч уже замедляется, а с сотнями считает часами.

Вопрос: можно ли преобразовать эту формулу в макрос, который будет искать в выделенном диапазоне дубли, и если дубли найдены писать слово дубль правее (например дубли ищут в столбце А:А, а если они есть то пишет слово дубль в столбец В:В).
Нужно чтобы слово дубль писалось рядом с каждым значением у которого есть дубль, т.е одинаковые значения в ячейках А3 и А15 и машина пропишет слово дубль правее обоих этих ячеек в В3 и В15
В файле примере для наглядности выделил дубли цветом.
Модификация макроса для массового поиска дублей, Макрос выделяет найденные дубли цветом, а нужно добавить чтоб ещё выделял словом справа от столбца.
 
Jack Famous, есть такое).
Изначально нужно было вот такую формулу
Код
=СЧЁТЕСЛИ(D:D;D2)>1

сделать в макрос, потому что на сотнях тысяч ячеек она считается часами. В итоге поиски на форуме вывели меня на тему с макросом бедвита, который всё обрабатывал за минуты, 743 000 ячеек минуты за 3 плюс минус.  
Изменено: zvolkz - 21.06.2022 19:23:24
Модификация макроса для массового поиска дублей, Макрос выделяет найденные дубли цветом, а нужно добавить чтоб ещё выделял словом справа от столбца.
 
Цитата
написал:
Не понимаю, чем не устраивает и что вам даст вывод в соседнюю ячейку
Это позволяет с помощью формул делать расчёты. До того как появилась проблема с фильтрами, я в ручную выбирал фильтр по цвету, а потом сам прописывал слово дубль напротив цветных ячеек
Ещё раз благодарю за помощь, Ваша таблица будет очень полезной, но других задачах.  
Модификация макроса для массового поиска дублей, Макрос выделяет найденные дубли цветом, а нужно добавить чтоб ещё выделял словом справа от столбца.
 
Цитата
написал:
Впрочем, у вас в макросе она и не используется (тогда зачем она)
А она и не нужна, макрос всё красит в цвет похожий на жёлтый для удобства фильтрации.
Огромное спасибо Вам за проделанную работу, очень круто сделано, но в реальной задаче нужен именно макрос. Меня старый макрос устраивает, но оказалось что когда из 240 000 ячеек всего 9 дублей и машина их красит, то фильтр эксель не может отфильтровать по цвету, из-за этого эти дубли не вычленить.

Как вариант: может можно новый код написать что если в выделенном диапазоне ячейка покрашена в цвет 6740479 то напротив неё, правее столбца пишет слово дубль.
Ігор Гончаренко, написал вот такой код который красит ячейки
Код
Sub FillB2s()
  Dim ws As Worksheet
  For Each ws In Worksheets
    If ws.[b2] <> 1 Then ws.[b2].Interior.Color = 255
  Next
End Sub

я думаю можно сделать наоборот, но не знаю и не понимаю как прописать диапазоны сравнения, а не точные координаты ячеек как у Игоря.  
Модификация макроса для массового поиска дублей, Макрос выделяет найденные дубли цветом, а нужно добавить чтоб ещё выделял словом справа от столбца.
 
Здравствуйте. bedvit, в теме https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=82834 написал отличный макрос для быстрого поиска дублей в больших массивах данных и выделения их цветом.
Код
Option Explicit'Автор Б. Виталий В. (bedvit)
'Макрос записан: 21/10/2016
'Редакция: 6 от 26/02/2020
'Действие: выделение разными цветами дубликатов в выделенных диапазонах
Sub select_replica() 'рабочий
Dim R As Range, Rf As Range, Rc As Range, i As Long, s(3) As Long, ac, t, x, cell
Dim Dict: Set Dict = CreateObject("Scripting.Dictionary")
Dim DictColor: Set DictColor = CreateObject("Scripting.Dictionary")
t = Timer
 
On Error Resume Next
If Selection.CountLarge = 1 Then
    Set Rf = ActiveSheet.UsedRange.SpecialCells(xlCellTypeFormulas, 23)
    Set Rc = ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants, 23)
Else
    Set Rf = Intersect(ActiveSheet.UsedRange, Selection).SpecialCells(xlCellTypeFormulas, 23)
    Set Rc = Intersect(ActiveSheet.UsedRange, Selection).SpecialCells(xlCellTypeConstants, 23)
End If
On Error GoTo 0
 
With Application: .ScreenUpdating = 0: .DisplayAlerts = 0: .EnableEvents = 0: ac = .Calculation: .Calculation = -4135: .StatusBar = "BE: обработка данных...": End With
Set R = Rf: GoSub Go_
Set R = Rc: GoSub Go_
With Application: .ScreenUpdating = 1: .DisplayAlerts = 1: .EnableEvents = 1: .Calculation = ac: .StatusBar = False: End With
Debug.Print "select_replica = " & Timer - t
MsgBox "Выделено разных групп дубликатов (разными цветами): " & i, vbInformation
Exit Sub
     
Go_:
If Not R Is Nothing Then
    R.Interior.Pattern = Empty
    For Each cell In R.Cells
        If Dict.Exists(cell.Value) Then
            x = Dict.Item(cell.Value)
            If x(3) = 1 Then
                i = i + 1
                x(2) = 6740479
            cell.Interior.Color = x(2)
        Else
            s(0) = cell.Row
            s(1) = cell.Column
            s(3) = 1
            Dict.Add cell.Value, s
        End If
    Next
End If
Return
End Sub
 
Function Generate_nice_color() As Long
Dim R As Long, G As Long, B As Long
Do
    Randomize
    R = Int(Rnd * 256)
    G = Int(Rnd * 256)
    B = Int(Rnd * 256)
Loop Until R + G + B > 500 And R + G + B < 700
Generate_nice_color = RGB(R, G, B)
End Function

Иногда при сравнении больших массивов, на сотни тысяч ячеек, может быть всего несколько дублей, и их не получается найти через стандартный фильтр эксель.
Вопрос можно ли усовершенствовать макрос так чтобы, он после поиска дублей, правее сравниваемого столбца, напротив ячейки с залитым цветом дублем, писал слово дубль.
Пример ищем дубли в столбце В:В, макрос их нашёл и в столбце С:С напротив дублей написал слово Дубль.
Изменено: zvolkz - 21.06.2022 14:52:04
Формирование графика движения ТС
 
evdokimovpavel28, это значит что Вы создали такую же тему на другом форуме.  
Изменено: zvolkz - 20.06.2022 14:07:51
Усовершенствование формулы сравнивающей даты, Есть две формулы сравнивающие даты, но они работают с погрешностью
 
_Boroda_, Большое спасибо Вам за помощь, всё отлично отработало на реальной задаче.  
Усовершенствование формулы сравнивающей даты, Есть две формулы сравнивающие даты, но они работают с погрешностью
 
Прикладываю новый файл пример, где между датами есть столбцы с текстом
Усовершенствование формулы сравнивающей даты, Есть две формулы сравнивающие даты, но они работают с погрешностью
 
_Boroda_, спасибо за помощь, всё сработало.
Вопрос: можно ли в формуле отдельно прописать столбцы для сравнения дат например M2, O2, Q2 и так до AS2, потому что между ними есть столбцы с текстом (решение написанное буквами)?, иначе в строке где идут столбцы с датами и решениями формула выдаёт ошибку ЗНАЧ.
В файле примере это столбцы залитые серым цветом, между оранжевыми столбцами с датами.  
Усовершенствование формулы сравнивающей даты, Есть две формулы сравнивающие даты, но они работают с погрешностью
 
Пытливый, сегодня проверил Вашу формулу на реальной задаче. Она отработала, нашла ИСТИНУ, но много значений ЛОЖЬ, хотя если просмотреть даты в ручную то у них верный порядок, в файле примере выделил цветом где формула нашла ЛОЖЬ, хотя даты идут верно.
Может быть это связано с тем что между столбцами с датами решения есть столбцы с текстом (там прописывается само решение)?
Изменено: zvolkz - 20.06.2022 08:20:07
Усовершенствование формулы сравнивающей даты, Есть две формулы сравнивающие даты, но они работают с погрешностью
 
Пытливый, спасибо за помощь, в файле примере всё хорошо отработало.
Усовершенствование формулы сравнивающей даты, Есть две формулы сравнивающие даты, но они работают с погрешностью
 
Здравствуйте. Я придумал 2 формулы сравнивающие множество дат, на предмет чтобы дата в столбце К:К была самой младшей т.е обязательно должна быть меньше или равна датам в соседних столбцах, а если те даты в соседних столбцах меньше, то это ошибка.
Код
=ЕСЛИМН(ДЛСТР(M2)>0;K2<=M2;ДЛСТР(O2)>0;K2<=O2;ДЛСТР(Q2)>0;K2<=Q2;ДЛСТР(S2)>0;K2<=S2;ДЛСТР(U2)>0;K2<=U2;ДЛСТР(W2)>0;K2<=W2;ДЛСТР(Y2)>0;K2<=Y2;ДЛСТР(AA2)>0;K2<=AA2;ДЛСТР(AC2)>0;K2<=AC2;ДЛСТР(AE2)>0;K2<=AE2;ДЛСТР(AG2)>0;K2<=AG2;ДЛСТР(AI2)>0;K2<=AI2;ДЛСТР(AK2)>0;K2<=AK2;ДЛСТР(AM2)>0;K2<=AM2;ДЛСТР(AO2)>0;K2<=AO2;ДЛСТР(AQ2)>0;K2<=AQ2;ДЛСТР(AS2)>0;K2<=AS2)
Эта формула работает, если даты идут в неверном порядке то пишет ЛОЖЬ, если дата есть только в столбце К:К то пишет Н/Д, если всё норм то ИСТИНА, но при работе была обнаружена погрешность формулы. Формула может вывести ИСТИНА в случае если не все даты идут в верном порядке т.е когда внутри формулы есть значения ЛОЖЬ и ИСТИНА, формула может поставить ИСТИНУ.
Чтобы это преодолеть я сделал другую формулу:
Код
 =ЕСЛИ(ИЛИ(ДЛСТР(M2)>0;ДЛСТР(O2)>0;ДЛСТР(Q2)>0;ДЛСТР(S2)>0;ДЛСТР(U2)>0;ДЛСТР(W2)>0;ДЛСТР(Y2)>0;ДЛСТР(AA2)>0;ДЛСТР(AC2)>0;ДЛСТР(AE2)>0;ДЛСТР(AG2)>0;ДЛСТР(AI2)>0;ДЛСТР(AK2)>0;ДЛСТР(AM2)>0;ДЛСТР(AO2)>0;ДЛСТР(AQ2)>0;ДЛСТР(AS2)>0);И(K2<=M2;K2<=O2;K2<=Q2;K2<=S2;K2<=U2;K2<=W2;K2<=Y2;K2<=AA2;K2<=AC2;K2<=AE2;K2<=AG2;K2<=AI2;K2<=AK2;K2<=AM2;K2<=AO2;K2<=AQ2;K2<=AS2))
Но, она тоже работает с погрешностью, так если дата в К:К меньше или равно М:М, а в следующих столбцах пусто, то формула всё равно выводит ЛОЖЬ.

Подскажите можно ли преодолеть эти погрешности в формулах? или нужна новая формула?  
Макрос копирующий данные на новые листы по условию
 
Ігор Гончаренко, #13 тоже отлично работает  
Макрос копирующий данные на новые листы по условию
 
RAN, большое спасибо  
Макрос копирующий данные на новые листы по условию
 
Ігор Гончаренко, при работе макроса с реальной задачей, появилась проблема - в столбце G:G есть наименование подразделений которые содержат более 31 знака, и макрос не срабатывает и выдаёт ошибку так как такое название не "влезает" на лист.
Можно ли сделать так чтобы макрос давал стандартные названия новым листам - лист2, лист3, лист4 и т.д.
Макрос копирующий данные на новые листы по условию
 
Вас понял, заменил, и всё отлично сработало, большое спасибо за помощь.  
Формула для свода данных в разрезе статей затрат и периода, Формула для свода данных в разрезе статей затрат и периода
 
Jack Famous, моё почтение мощная формула, я пытался сделать это же через счётеслимн
Макрос копирующий данные на новые листы по условию
 
При попытке выполнить макрос выдаёт ошибку. Скрины ниже.
Макрос копирующий данные на новые листы по условию
 
Ігор Гончаренко, спасибо, всё работает, но копирует столбцы с G:G по I:I, а можно сделать чтобы столбец F:F тоже копировался, т.е чтоб на новый лист выводились все 4 столбца. Или нужно самому вручную вставить пустой столбец после I:I, в него скопировать данные из F:F, и заменить
Код
Set rg = Intersect([g:i], ActiveSheet.UsedRange)

на

Код
 Set rg = Intersect([g:j], ActiveSheet.UsedRange)

и после этого запускать макрос?

Макрос копирующий данные на новые листы по условию
 
evgeniygeo, записать через запись макроса?
Макрос копирующий данные на новые листы по условию
 
Здравствуйте.
Задача: в общей таблице на листе '1'! есть данные по множеству подразделений, наименование подразделений в столбце G:G. Нужно чтобы макрос в этой же или новой книге (как удобней и проще реализовать) скопировал на новые листы данные столбцов F:F, G:G, H:H, I:I, по условию - наименованию подразделения из столбца G:G.
Как будто, ты в ручную выбрал через фильтр подразделение в столбце G:G, и сам скопировал эти 4 столбца на новый лист.  
Может быть это можно реализовать через отдельный лист справочник, или машина сама отличит уникальные значения в столбце G:G.
Макрос заливающий ячейку красным цветом по условию
 
Большое спасибо за помощь.  
Макрос заливающий ячейку красным цветом по условию
 
Опоздал с цитатой, Вы уже макрос написали. Проверил он работает.  
Макрос заливающий ячейку красным цветом по условию
 
Цитата
написал:
да, удобнее)) согласно предыдущего п. ТЗ макрос срабатывает ТОЛЬКО на активном листе, выбрали по очереди 50 листов и все пересчитали. очень удобно)
Если возможно сделать так чтоб он сразу на всех листах в книге срабатывал, и если это не сложно сделать, то будет замечательно.  
Страницы: 1 2 3 4 След.
Наверх