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

Страницы: 1 2 3 След.
Убрать переносы и пробелы в тексте ячеек из диапазона
 
Под свой столбец E4:E сделал так
Код
Sub УбираемПереносыПробелыE_Лист()
Application.EnableEvents = False

Dim a(), i&, j&
a = ActiveSheet.UsedRange.Value
For i = 4 To UBound(a)
'  For j = 5 To UBound(a, 2)
  For j = 5 To 5
    a(i, j) = Replace(a(i, j), Chr(10), "")
    a(i, j) = Replace(a(i, j), Chr(13), "")
    a(i, j) = Application.WorksheetFunction.Trim(a(i, j))
    a(i, j) = WorksheetFunction.Trim(a(i, j))
  Next
Next
ActiveSheet.UsedRange.Value = a

Application.EnableEvents = True
End Sub
Заработало побыстрее - проверил   Спасибо AAF за помощь !
Убрать переносы и пробелы в тексте ячеек из диапазона
 
Здравствуйте всем !

Сделал макрос по удалению переносов и пробелов
переносы 2 видов: Chr(10) и Chr(13) - появляются при копировании из разных источников
пробелы - Application.WorksheetFunction.Trim (пробелы внутри строки) и WorksheetFunction.Trim (пробелы снаружи строки)
Работать то работает - только медленно очень тк диапазон  в 500-1000 ячеек медленно все крутит
Как его переделать чтоб быстрее работал ?
Код
Public AdrE As String
Sub УбираемПереносыПробелыE_Лист ()
Application.ScreenUpdating = False
Application.EnableEvents = False
AdrE = ActiveCell.Address

Dim LastRow As Long, rng As Range
With ActiveSheet.UsedRange

LastRow = ActiveSheet.UsedRange.Rows.Count
'Убираем_пробелы_переносы 4 столбец
ActiveSheet.Range("E4", Cells(LastRow, 5)).Select
Dim RangeE As Range, CellE As Range
Set RangeE = Intersect(Selection, ActiveSheet.UsedRange)

 'переносы 2 видов 4 столбец
RangeE.Replace What:=Chr(10), Replacement:=" ", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
RangeE.Replace What:=Chr(13), Replacement:=" ", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

For Each CellE In RangeE 'пробелы 4 столбец
CellE.Value = Application.WorksheetFunction.Trim(CellE.Value) 'пробелы внутри строки
CellE.Value = WorksheetFunction.Trim(CellE.Value) 'пробелы снаружи строки
Next 

End With

ActiveSheet.Range(AdrE).Select

Application.EnableEvents = True
Application.ScreenUpdating = True 
End Sub
Изменено: igrek2 - 16.06.2018 11:04:00
Запретить автосохранение во время выполнения макроса
 
Здравствуйте всем !

Есть макрос автосохранения в книге который работает каждые 15 мин
Но заметил что могут идти конфликты - когда происходит выполнение любого другого макроса1 и автосохранение (тоже получается макрос2)
Те по сути когда два макроса сталкиваются по времени - книга мертво зависает
Как запретить автосохранение  во время выполнения другого любого макроса (или отложить его на время выполнения любого макроса в книге)
Макрос автосохранения ниже - что прилепить к нему чтобы выполнить это условие ?

В книгу
Код
Private Sub Workbook_Open()
'сохраняем книгу при открытии и по таймеру в каждые 15 мин
Call АвтосохранениеКнига 'сохраняем книгу по таймеру в каждые 15 мин
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'при закрытии книги автосохранение выключается (может открываться книга в закрытом состоянии )
 On Error Resume Next
Application.OnTime EarliestTime:=TimeAvto, Procedure:="АвтосохранениеКнига", Schedule:=False
End Sub 

В модуль

Код
Public TimeAvto As Date
Sub АвтосохранениеКнига()
TimeAvto = Now + TimeValue("00:15:00")
Application.OnTime TimeAvto, "АвтосохранениеКнига"
End Sub 
Формат даты в активной ячейке
 
путем экспериментов так получилось для результата (исх ячейка в любом формате кроме даты) в русском чтоб  было
для вида ХХ.ХХ.ХХХХ
Код
ActiveCell.Value = Format(ActiveCell.Value, "dd.mm.yyyy;@")
ActiveCell.NumberFormat = "m/d/yyyy"

для вида ХХ.ХХ.ХХ
Код
Application.ErrorCheckingOptions.TextDate = False
ActiveCell.Value = Format(ActiveCell.Value, "dd.mm.yy;@")
ActiveCell.NumberFormat = "dd/mm/yy;@"
Изменено: igrek2 - 12.06.2018 07:04:09
Формат даты в активной ячейке
 
Здравствуйте !

Столкнулся с корректным форматированием активной ячейки как даты пользуясь рекодером
что увидел при форматировании ячейки в окне "Формат ячеек"
1)  Дата - Язык русский - тип выдает со звездочкой вида *12.04.2013    рекодер пишет формат .NumberFormat = "m/d/yyyy"

Делаем обратную задачу - макросом
пишу в макросе .NumberFormat = "dd.mm.yyyy;@"  - проверяю что записано в ячейке Дата-Язык азербайджанский (кириллица) -тип без звездочки 12.04.2013
Тогда так
пишем в макросе .NumberFormat = "d/m/yyyy;@"  - проверяю что записано  в ячейке Дата-Язык английский (зимбабве) -тип без звездочки 2.04.2013
Тогда так
пишу в макросе .NumberFormat = "m/d/yyyy;@"  - проверяю что записано  в  ячейке Дата-Язык английский (зимбабве) -тип без звездочки 4.02.2013
Соображаю вроде что значек @ вроде переводит в другой язык ладно (хотя если просто сделать "@" - это просто текстовый формат  и что тогда m/d/yyyy;@ - может перевод даты в другой юникод ??)

Смотрю на запись рекодера с русским языком -  .NumberFormat = "m/d/yyyy" и вижу почемуто перепутаны месяцы и дни в последовательности
Делаю так вроде как надо
пишу в макросе .NumberFormat = "d/m/yyyy"  - проверяю что записано  в   ячейке Дата-Языка нет(все форматы Д.М.ГГГГ) -тип без звездочки 2.4.2013

2)Понимаю что Ничего не понимаю  :)   делаю как рекодер записал в п.1 выше
пишу в макросе .NumberFormat = "m/d/yyyy"  - проверяю что записано  в    ячейке Дата-Язык русский -тип со звездочкой вида *12.04.2013 то что надо

вопросы такие:
Почему в русском формате m/d/yyyy перепутаны дни и месяцы местами - а отображает как надо день-месяц-год
Что означает @ в макросе при прописывании формата - это перевод в другую кодировку или что ?
В чем разница ActiveCell.NumberFormat = "m/d/yyyy"   и  ActiveCell.Value = Format(ActiveCell.Value, "m/d/yyyy")  - разницы не заметил ?
Изменено: igrek2 - 11.06.2018 08:24:19
Сортировка дат в массиве по возрастанию с выгрузкой в ComboBox1.List
 
Благодарю Юрий за помощь ! Сильно выручили - полдня уже сижу
Сортировка дат в массиве по возрастанию с выгрузкой в ComboBox1.List
 
пример сделал во вложении
Сортировка дат в массиве по возрастанию с выгрузкой в ComboBox1.List
 
точно даты - истина пишет
Сортировка дат в массиве по возрастанию с выгрузкой в ComboBox1.List
 
Здравствуйте !

Нашел опробовал макрос - макрос обрабатывает диапазон 3-го столбца с 4 строки,  и должен сортировать по возрастанию даты - после это выгрузка в  ComboBox1.List. Но вот беда с датами именно - не встают они в список по возрастанию непонятно почему - именно с датами такое
Как поправить макрос именно под правильную сортировку дат ?
Код
Private Sub UserForm_Initialize()

Dim Arr(), i As Long, s As String, iLastRow As Long, x
iLastRow = Cells(Rows.Count, 2).End(xlUp).Row
Arr = Range(Cells(4, 3), Cells(iLastRow, 3))
    On Error Resume Next
    With New Collection
        For Each x In Arr()
            s = Trim(x)
            If Len(s) > 0 Then
                If IsEmpty(.Item(s)) Then
                    For i = 1 To .Count
                        If s < .Item(i) Then Exit For
                    Next
                    If i > .Count Then .Add s, s Else .Add s, s, Before:=i
                End If
            End If
        Next
    ReDim Arr(1 To .Count)
        For i = 1 To .Count
            Arr(i) = .Item(i)
        Next
    End With

Me.ComboBox1.List = Arr

End Sub
  
Перенос данных из листа одной книги в лист другой книги ниже заполненной строки
 
вы имеете в виду проверку на дубли по столбцу Е - так дубли же у вас не проходят я проверял все ок   имеется в виду что дубли первого переноса проверяются (и если удаляется массив ТаблицаКО2.xls и вдруг в него попали данные которые совпадают с уже внесенным в  ТаблицаКО.xls - куда переносим то дубли останутся перенесенные ?) ваш код работает быстро и как надо проверил на внесение дублей вторично - не вносятся

Единственные заковыки - это то что когда исходный массив в ТаблицаКО2.xls пустой начиная с 4 строки - тогда ошибка идет на строке larr = lsht.[a4].Resize(lLastRow - 3, 6).Value
и массив не очищается после выгрузки (те сейчас как есть просто копирование с удалением дублей происходит)
но если я както код Kuzmich еще понимаю - то в вашем я ниче совсем понять не могу и тупо не могу вставить delete (куда - еще раз пробегаться до последней строки в конце вашего кода чтоли) - но работает быстрее на более больших заполнениях
поэтому и не знаю как внести измения в ваш код который быстрее - как очистить массив ТаблицаКО2 после выгрузки и исправить ошибку когда вдруг
массив ТаблицаКО2 пустой
Изменено: igrek2 - 08.06.2018 19:41:05
Перенос данных из листа одной книги в лист другой книги ниже заполненной строки
 
для чего нужно - очистить таблицу ТаблицаКО2.xls от перенесенных данных после переноса   (потом в таблицу ТаблицаКО2.xls будут вносится другие данные которые также будут потом перенесены с очисткой ТаблицаКО2.xls)
Перенос данных из листа одной книги в лист другой книги ниже заполненной строки
 
Сейчас работает без ошибок Nordheim - спасибо !  только одно можете посоветовать - как вырезать-вставить из ТаблицаКО2.xls (а не просто скопировать) данные ?
Перенос данных из листа одной книги в лист другой книги ниже заполненной строки
 
в коде Nordheim вашем почемуто ошибка вылазит такая Run-time error 1004   Application-defined or object--defined error на строке
Код
larr = lsht.[a4].Resize(lLastRow - 3, 6).Value
    iarr = isht.[a4].Resize(iLastRow - 3, 6).Value
Изменено: igrek2 - 05.06.2018 09:15:02
Перенос данных из листа одной книги в лист другой книги ниже заполненной строки
 
Спасибо Kuzmich за ваш код ! Он работает  только изменил  немного - надо было вырезать и вставить
Изменил строчки
Код
.Range("A" & i & ":F" & i).Copy Range("A" & iLastRow)
на строчку
Код
.Range("A" & i & ":F" & i).Copy Range("A" & iLastRow)
.Range("A" & i & ":F" & i).ClearContents

Еще одно пожелание - не знаю как сделать   Как вставить только значения в ТаблицаКО.xls ?
попробовал изменить код
Код
Range("A" & i & ":F" & i).Copy 
Range("A" & iLastRow).PasteSpecial Paste:=xlPasteValues
Range("A" & i & ":F" & i).ClearContents
 
но ничего не получилось - значения не вставляются ?  как правильно сделать для вставки только значений (чтоб форматирование не трогать)?
Перенос данных из листа одной книги в лист другой книги ниже заполненной строки
 
Здравствуйте !

Есть 2 книги: ТаблицаКО.xlsm  и ТаблицаКО2.xls - обе в одной папке
Нужно с ТаблицаКО2.Лист(1)  перенести данные в ТаблицаКО.Лист(1)
Оба листа идентичны по колонкам и переносимому диапазону - надо диапазон A4:F ТаблицаКО2  перенести в A4:F ТаблицаКО

Только вот условия переноса для меня трудные не могу сделать -
перенести надо с дописыванием (ниже последней заполненной строки)
и проверить еще на дубли переносимый диапазон из листа ТаблицаКО2
- если в переносимом диапазоне в строках по столбцу E есть совпадения  со столбцом E куда переносим то эти строки не переносятся - а удаляются просто
те переносятся не дубли

Пока хватило только на то чтобы массивы определить откуда куда переносим - но эти условия не знаю как сделать
Пример на всякий случай приложил с 2 файлами
Код
Sub test()
Dim sht As Worksheet, sht1 As Worksheet
Dim arr(), arr1(), i&, j&, x&
Set sht = Workbooks("ТаблицаKO.xlsm").Sheets(1)
Set sht1 = Workbooks("Новая_выгрузка.xls").Sheets(1)
With sht
    i = .Cells(.Rows.Count, "b").End(xlUp).Row
    'j = .Cells(3, .Columns.Count).End(xlToLeft).Column
    arr = .Range(.Cells(4, "a"), .Cells(i, 6))
End With
With sht1
    i = .Cells(.Rows.Count, "b").End(xlUp).Row
    'j = .Cells(3, .Columns.Count).End(xlToLeft).Column
    arr1 = .Range(.Cells(4, "a"), .Cells(i, 6))
For i = LBound(arr1) To UBound(arr1)

 'както надо перенести здесь

Next i
End With
End Sub
Найти и пересортировать дубликаты строк по значению столбца
 
так получше будет -поправил косяк и ввел координатное выделение для поиска
Ссылка2 на скачку
Изменено: igrek2 - 04.09.2017 14:41:31
Найти и пересортировать дубликаты строк по значению столбца
 
Спасибо Kuzmich за замечание - учту эти моменты
Форму поиска прикрепил к таблице  -  чтоб по окончании сортировки по вызову поиска из формы  в поиске были видны найденные значения и можно было из формы поиска пройтись по столбцу X  (где собираются найденные значения). Для большой таблицы в помощь.
Файл получился 170кб  поэтому на Яндекс диск залил

Ссылка на скачку
Изменено: igrek2 - 04.09.2017 14:40:22
Найти и пересортировать дубликаты строк по значению столбца
 
 все поставил  -  еще попробую на днях форму поиска добавлю - чтоб полуавтоматом искало в диапазоне по значениям X
выложу в теме
Изменено: igrek2 - 03.09.2017 14:59:43
Найти и пересортировать дубликаты строк по значению столбца
 
Благодарю Kuzmich за помощь и поддержку !   последний вопрос чайника - - где в коде строки красить куда .Interior.ColorIndex = 7 вставить для закраски сформированных диапазонов с одинаковыми значениями ?  
Изменено: igrek2 - 03.09.2017 14:30:18
Найти и пересортировать дубликаты строк по значению столбца
 
вас неправильно понял - думал имеете в виду что вообще ничего нет
Найти и пересортировать дубликаты строк по значению столбца
 
и еще только один вопрос остался - где в коде строки красить куда .Interior.ColorIndex = 7 вставить ?  остальное доделаю
Изменено: igrek2 - 03.09.2017 13:53:10
Найти и пересортировать дубликаты строк по значению столбца
 
я вам файл отсылаю там уник значения только в таблице - дублей нет  ошибку видно
Найти и пересортировать дубликаты строк по значению столбца
 
Цитата
Nordheim написал:
Ну после объяснения, еще больше запутался
ну проще говоря это оценка по времени - сколько и каких ФИО надо обработать
Найти и пересортировать дубликаты строк по значению столбца
 
с ошибкой так сделать ? чисто интуитивно  :)  
Код
If Range("X1").Resize(.Count) = 0 Then
  ExitSub
  Else
  Range("X1").Resize(.Count) = Application.Transpose(.Keys)
  End If
Изменено: igrek2 - 03.09.2017 12:54:40
Найти и пересортировать дубликаты строк по значению столбца
 
Цитата
Nordheim написал:
Честно не понял зачем N и N2, поэтому слепил без них.
Таблица большая разбросаны ФИО - собрали, цветом выделили, в ТextBox посмотрели сколько важных фио ( с несколькими записями) надо просмотреть и сколько записей просмотреть чтоб предварительно оценку по времени сделать сколько  с ними возится надо - записи дополнять надо   отдельно еще поиск сделаю по ключевым  ФИо потом
Найти и пересортировать дубликаты строк по значению столбца
 
я бы еще понимал что где в вашем коде - как проверку на что проверку-выходить чтоли когда .Count=0,  On Error ставить не ставить
Я конкретно не понимаю в вашем коде
- как ошибку убрать
- где строки закрасить отфильтрованные
-куда поставить Me.TextBox1.Text = "Ничего не найдено !" & vbCrLf & "Дубликатов строк по ФИО нет."

остальное N и N2 сам вставлю Me.TextBox1.Text = "На листе Таблица найдено и сгруппированно " & " " & N & " " & "строк дубликатов" & vbCrLf & _
"по ФИО !" & " " & " Получилось" & " " & "N2" & " " & "блоков (диапазонов)."

Я два дня возился со своей таблицей, которую вы "похоронили" за 10 мин :)  и сделали на порядок лучше
Изменено: igrek2 - 03.09.2017 12:28:46
Найти и пересортировать дубликаты строк по значению столбца
 
Все вроде замечательно  - быстрее работает на порядок ваш скрипт  - только одна ошибка вылазит  на диапазоне где нет совпадений:
Range("X1").Resize(.Count) = Application.Transpose(.Keys)   вот здесь ругается макрос
как проверил:  собрал диапазоны (макрос на форму поставил),  потом удалил диапазоны с повторяющимися значениями, потом запустил по новой макрос

Я половины не понимаю в том что у вас написано - сам точно не разберусь.
Изменено: igrek2 - 03.09.2017 11:54:32
Найти и пересортировать дубликаты строк по значению столбца
 
благодарю за помощь Kuzmich  - посмотрю сейчас
Найти и пересортировать дубликаты строк по значению столбца
 
до  7000 строк
Найти и пересортировать дубликаты строк по значению столбца
 
да точно
Страницы: 1 2 3 След.
Наверх