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

Страницы: 1 2 3 След.
Как убрать лишние строки из ячейки (VBA) ?, Как убрать лишние строки из ячейки (VBA) ?
 
Дмитрий(The_Prist) Щербаков, Sanja,  Все Ок,  Спасибо!  Хороших выходных!
Как убрать лишние строки из ячейки (VBA) ?, Как убрать лишние строки из ячейки (VBA) ?
 
Sanja,  вы правы, в примере работает, а в реальном файле, в котором колонка 1:1 - не работает.
буду смотреть, странно...
Как убрать лишние строки из ячейки (VBA) ?, Как убрать лишние строки из ячейки (VBA) ?
 
Sanja, _Boroda_, к сожалению,  оба предложения не удаляют из ячейки пустые строки.
Как убрать лишние строки из ячейки (VBA) ?, Как убрать лишние строки из ячейки (VBA) ?
 
Добрый день,  на листе в ячейку A2 копируется Дата из вордовского документа.  
После копирования Дата помещается в ячейке в третьей строке.  (см. файл)
Не могу кодом VBA убрать лишние строки из этой ячейки.
Пытаюсь делать так, (даже лишнее):

Код
Dim cell As Range
    Range("A2").Value = Replace(Range("A2").Value, Chr(160), " ")
    Range("A2").Value = Replace(Range("A2").Value, Chr(9), " ")
    Range("A2").Value = Application.WorksheetFunction.Trim(Range("A2").Value)
             
   excelWorksheet.Range("F2").Select
   For Each cell In Selection
          cells(2, 1).Value = Replace(cells(2, 6).Value, vbCrLf, vbCr) ' Удалить пустые строки
          'cells(2, 1).Value = Replace(cells(2, 6).Value, Chr(10), "")  ' ?
   Next cell

Что делаю не так и как исправить ?
Спасибо.
Как данные столбца перевести в одну строку (ячейку) в Excel или с помощью PQuery?
 
Дмитрий(The_Prist) Щербаков, Спасибо, направление понял, похоже на то, что нужно, если конечно еще, что-то не всплывет, запрос почищу от лишнего.
Как данные столбца перевести в одну строку (ячейку) в Excel или с помощью PQuery?
 
YGrigor18,  Добрый день!  Прош упрощения, возник еще один вопрос, по формату столбца  [Количество]
В исходном виде столбец отформатирован в виде:
Кол-во
7
5
15 500.000
13.300
15 850.000
15 200.000
10 800.000
 9 850.000

Как сохранить такой формат и не обрезать на выходе до целых чисел?  Чтобы в ИТОГО попадали цифры с тремя знаками после запятой.
На этапе объединения столбцов из разных форматов возникает ошибка, если столбцы имеют разный формат (текс+ число)

Спасибо.
Как данные столбца перевести в одну строку (ячейку) в Excel или с помощью PQuery?
 
Дмитрий(The_Prist) Щербаков, Вы правы, удаление дубликатов помогло, все ОК! спасибо!
Как данные столбца перевести в одну строку (ячейку) в Excel или с помощью PQuery?
 
sotnikov, Добрый день! Прош упрощения, как это применить в примере?
Как данные столбца перевести в одну строку (ячейку) в Excel или с помощью PQuery?
 
Дмитрий(The_Prist) Щербаков, Спасибо!  Вроде как работает. Одно уточнение - получается, что после обработки файлов или после обновления, в ИТОГОВОМ столбце растет кол-во абсолютно равных  строк (типа складывается от всех обработанных файлов.)
Это супер принципиально,  но как с этим бороться?
Как данные столбца перевести в одну строку (ячейку) в Excel или с помощью PQuery?
 
Добрый день! Есть много xls-файлов одинаковой структуры.
1). Нужно в каждом предварительно очистить колонки [Наименование], [Ед.] и [Кол-во] от знаков, типа ";" и "~"
2). Далее поля(ячейки) сложить по правилу: [Наименование] & ";" [Ед.] & ";" & [Кол-во] & "~"
3). А потом данные итогового столбца перевести по сути в одну строку и записать в одну ячейку. (поле)
    Но как это сделать?

Попробовал использовать PQuery.  1, 2 - выполняется достаточно просто.
Далее нужно столбец записать в одну строку и в одно поле.
Применил Транспонирование, но оно переводит столбец строку и данные расписываются по разным полям.
А мне нужно в одно поле.  Можно конечно потом и сложить поля, но в каждом файле свое кол-во полей в строке получается.
И так не получается....

Может есть идеи как это делается в PQuery?
Ну или может не в PQuery

Спасибо.
Выделение цветом несовпадающих фрагментов строк (Excel, VBA)
 
Dmitriy XM, добрый день!
Извините, можете еще глянуть код, который был итоговый,  но увы он отрабатывает в некоторых моментах или некорректно,
или непонятно!  Где то по результатам  сравнения  выделятся слова целиком, где то части слов и это круто!  Так и хотелось бы.
А где-то одни и те же слова выделяются целиком, а в другой строчке, то же слово выделяется  по другому и частично.
Если вы конечно на связи ...

Код
Option Explicit 
Sub CompareText_Main()
    Dim rng1 As range, rng2 As range
    Set rng1 = GetRange("Основной диапазон")
    Set rng2 = GetRange("Диапазон для сравнения")
     
    If rng1.Rows.Count <> rng2.Rows.Count Then
        MsgBox "Диапазоны должны быть равны", vbCritical, "***"
        Exit Sub
    End If
     
    rng1.Font.Color = vbBlack
    rng2.Font.Color = vbRed
     
    Call CompareRanges(rng1, rng2)
End Sub
 
Private Sub CompareRanges(rng1 As range, rng2 As range)
    Dim x As Long
    For x = 1 To rng1.Rows.Count
         
        Dim where As String, find As String
        where = rng2.Cells(x).Value
        find = RealFind(rng1.Cells(x).Value, where)
         
        If find <> Empty Then
            Dim arrSpl As Variant
            arrSpl = Split(find, ";")
             
            Dim i As Long
            For i = LBound(arrSpl) To UBound(arrSpl) - 1
                 
                Dim word As String: word = arrSpl(i)
                Dim q As Integer, step As Integer
                step = IIf(Len(word) = 1, 1, Len(word))
                For q = 1 To Len(where) Step step
                    Dim inString As Long
                    inString = InStr(q, LCase(where), LCase(word), vbTextCompare)
                     
                    If inString > 0 Then
                        rng2.Cells(x).Characters(inString, step).Font.Color = vbBlack
                        q = inString + step
                    End If
                Next q
            Next i
        End If
    Next x
End Sub
 
Function RealFind(ByVal what As String, ByVal where As String) As String
    what = CleanString(what)
     
    Dim arrWhat As Variant
    arrWhat = Split(what, " ")
 
    Dim n As Long
    For n = LBound(arrWhat) To UBound(arrWhat)
        Dim inString As Long: inString = 0
        inString = InStr(1, LCase(where), LCase(arrWhat(n)), vbTextCompare)
         
        Dim result As String
        If inString > 0 Then result = result & arrWhat(n) & ";"
    Next n
     
    RealFind = result
End Function
 
Private Function CleanString(what As String) As String
    Dim RE As Object
    Set RE = CreateObject("VBScript.RegExp")
    RE.Global = True
    RE.Pattern = "[^\dА-Яа-яA-Za-z,()=]"
     
    CleanString = Application.Trim(RE.Replace(what, " "))
End Function
 
Private Function GetRange(header As String) As range
    Set GetRange = Application.InputBox(header, "Выделите диапазон", , , , , , 8)
End Function
Изменено: YGrigor18 - 15.08.2025 09:57:46
Выделение цветом несовпадающих фрагментов строк (Excel, VBA)
 
online, добрый день!
подскажите, можно ли в вашем варианте сделать выбор - выделять целые слова при  несовпадении или только символы несовпадения?
это еще один поиск в найденных словах или проще?
Выделение цветом несовпадающих фрагментов строк (Excel, VBA)
 
online, Dmitriy XM, МатросНаЗебре, спасибо за рабочие варианты программ и учет нюансов!  Надеюсь, что и других ваши коды порадуют!!!
Выделение цветом несовпадающих фрагментов строк (Excel, VBA)
 
МатросНаЗебре, добрый день, только добрался до задачи!  Все работает как задумано,  в том числе и по учету регистра.
Потестирую на других данных, но думаю, что все уже ОК! Спасибо!
Выделение цветом несовпадающих фрагментов строк (Excel, VBA)
 
Dmitriy XM, добрый день, только добрался до задачи!  по RE.Pattern понял. На тех данных, что есть сейчас все работает корректно!

Спасибо!  Буду пробовать далее.  Интересно, что данные для сравнения могут быть и на разных листах и даже в разных книгах.  
Выделение цветом несовпадающих фрагментов строк (Excel, VBA)
 
Dmitriy XM,  попробовал на данных,  "мм", "на" и "6" -  более не выделяются.
Но запятые "," выделяются красным и круглые скобки (),  строки 10 и 11 в файле, например.
Черт знает, как учесть эти все моменты?  :)  
Изменено: YGrigor18 - 22.07.2025 18:33:30
Выделение цветом несовпадающих фрагментов строк (Excel, VBA)
 
МатросНаЗебре,  проверил на тех же данных! Вроде как все ОКЮ пробелы не влияют! Спасибо!
И я правильно понимаю, что если нужно учитывать или не учитывать регистр ?, то дописываем параметр
If StrComp(cleanWordA, cleanWordB) = 0 Then  
If StrComp(cleanWordA, cleanWordB,1) = 0
Выделение цветом несовпадающих фрагментов строк (Excel, VBA)
 
МатросНаЗебре,  добрый день!  попробовал применить код программы на данных.
Посмотрите, пожалуйста, вложенный файл.  Код вполне рабочий! Спасибо!

Что заметил?
1) если в строе "Мама мыла раму"  вставить пробелы лишние типа- "Мама     мыла     раму", то красным выделяются все три слова.
   Посмотрите, pls,  по возможности как это можно устранить.
Изменено: YGrigor18 - 22.07.2025 16:40:28
Выделение цветом несовпадающих фрагментов строк (Excel, VBA)
 
Dmitriy XM,  в вашем коде выделяются не целые слова строк, в которых есть разночтения, а выделяются сами символы в этих словах.
Это отличает ваш вариант от других.
Посмотрите, pls, почему выделяются -  "мм", "на" и "6" - ?
И насколько понял, регистр символов не учитывается, а как сделать, чтобы он учитывался? (при необходимости)
Спасибо!
Изменено: YGrigor18 - 22.07.2025 16:35:45
Выделение цветом несовпадающих фрагментов строк (Excel, VBA)
 
Dmitriy XM,  спасибо,  все в п.1  ок!
Выделение цветом несовпадающих фрагментов строк (Excel, VBA)
 
Dmitriy XM, добрый день!  Попробовал применить код программы. Посмотрите, пожалуйста, вложенный файл.
1). При сравнении строк красным цветом выделяется то, что есть в обеих строках, а черным выделяется несовпадение.
    Как бы сделать наоборот,  а еще лучше, чтобы это было входным параметром (типа 0 или 1), на выбор оператора.
2). Во вложенном файле есть пример, где программа отловила "Н", написанные в разных кодировках.
    В строке в файле выделено "на" и "6" - тоже вопрос.    
    В других строках выделяется "мм",  тоже вопрос.  
Изменено: YGrigor18 - 21.07.2025 12:31:31
Выделение цветом несовпадающих фрагментов строк (Excel, VBA)
 
МатросНаЗебре, добрый день! Спасибо за вариант! Проверить смогу в понедельник, на выходных нет компа под рукой. Обязательно отпишусь!
Выделение цветом несовпадающих фрагментов строк (Excel, VBA)
 
Dmitriy XM, добрый день! Спасибо за вариант! Проверить смогу в понедельник, на выходных нет компа под рукой. Обязательно отпишусь!
Выделение цветом несовпадающих фрагментов строк (Excel, VBA)
 
online, Добрый день! Попробовал на реальном файле, все сработало идеально! даже не знаю, что можно добавить!
И исключения в строке есть и работает в обе стороны при сравнении. Гениально!
Осталось по мелочи добавить, чисто для удобства, запрос к оператору - какие колонки нужно сравнивать, потому как они могут быть не 1 и 2,  и пожалуй все.
Огромное спасибо!!!
Выделение цветом несовпадающих фрагментов строк (Excel, VBA)
 

Вообще нужно решить как быть с регистром, пробелами и запятыми и ввести их как входные параметры в функцию или подпрограмму.
1). Чтобы можно было выбирать - учитывать регистр при сравнении или нет.
2). Учитывать наличие пробелов или нет?
Но, что имеется ввиду? Если будет написано все без пробелов, то это слишком и за это и браться не стоит - "мамамылараму"
Но если написано - "мама    мыла    раму" - то пробелы больше одного видимо не нужно учитывать и отбрасывать при сравнении.
3). По запятым - их лучше сделать входным параметров - хочешь учитывай, хочешь нет.

В приведенном коде программы идет по-позиционнное и посимвольное сравнение.
Если во второй строке поставить перед первым словом пробел, то "страдает" все сравнение...

Выделение цветом несовпадающих фрагментов строк (Excel, VBA)
 

Добрый день! Задача сравнения строк в Excel (VBA) и выделения цветом несовпадающих фрагментов строк.
Посмотрел решения и нужного как-то не нашел. В файле есть код, который ближе всего к желаемому, нашел в инете.
Например, сравниваем строки :
1) Мама мыла раму и 2) Мама намылила раму

Результат, цветом выделяется : намылила раму
Но по идее выделен должен быть текст: "намылила"

Т.е находится несовпадение и выделяется строка цветом  с этого места и до конца.

И сравнение строк и выделение цветом после нахождения совпадения не до конца корректный.
Слово "рама" есть и в строке 1 и 2, его не нужно цветом выделять.

или
1) Мама мыла раму и 2) мама намылила раму - выделено цветом: "мама намылила раму"
Выделяется вся строка, так как играет роль регистр.

А если вставлять в строки пробелы или запятые, типа : мама    намылила,     раму
то результат вообще неправильный, так как идет сравнение строк по-позиционное.

Может кто видел более интеллектуальное решение?

Чтобы цветом выделялось именно несовпадение строк и не более того, и не важно, где оно найдено вначале строки, в середине или конце.
И чтобы был выбор - искать "НЕ совпадение в строках" или "Совпадение в строках".
Чтобы запятые и лишние пробелы(вначале строк, в конце и между словами) по выбору оператора исключить из поиска.  Чтобы они не влияли таким кардинальным образом.

Спасибо!

Подскажите, как можно форму предварительного просмотра листа Excel перед печатью вывести кодом VBA поверх формы UserForm1 ?, Подскажите, как можно форму предварительного просмотра листа Excel перед печатью вывести кодом VBA поверх формы UserForm1 ?
 
Вопрос в принципе решил, но не знаю, оптимально это или нет.
Если перед просмотром поменять размер окна, то все работает.

Application.WindowState = xlMaximized

' Предварительный просмотр листа            
'Workbooks("Книга1").Worksheets("Лист1").PrintPreview
Application.WindowState = xlNormal
Подскажите, как можно форму предварительного просмотра листа Excel перед печатью вывести кодом VBA поверх формы UserForm1 ?, Подскажите, как можно форму предварительного просмотра листа Excel перед печатью вывести кодом VBA поверх формы UserForm1 ?
 
online, Дмитрий(The_Prist) Щербаков, все получилось как нужно, но когда открыт один файл Excel!
Cпасибо! В принципе работать можно.

p.s. из непонятного остался момент, когда открыты другие файлы Excel.
В коде явно указываю, какая книга и лист активные.
При первом просмотре перед печатью Preview,  открывается окно предварительного просмотра, которое можно закрыть только нажав крест "X"  на окне (правый верхний угол). Нет реакции ни на одну кнопку к самом окне предварительного просмотра Preview.  Окно как заблокировано!
Но если нажать ту же кнопку  просмотра на форме повторно - то закрыть окно просмотра Preview можно уже и кнопкой на форме и "X".
И после повторных просмотров в окне просмотра доступны все кнопки! (параметры страницы и другие)

В чем может быть проблемка?  Ведь кнопка просмотра запускает один и тот же код.

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

Код
Public Sub PrintPreview()
         Application.DisplayAlerts = False
         Application.ScreenUpdating = True
         Application.Visible = True       
        Windows("Книга1.xlsm").Activate
        Workbooks("Книга1.xlsm").Sheets("Лист1").Activate

       ' Скрываем UserForm1 перед запуском предварительного просмотра
        UserForm1.Hide              

      ' Предварительный просмотр листа      
       'Workbooks("Книга1").Worksheets("Лист1").PrintPreview
                              ' или      
       Workbooks("Книга1").Worksheets("Лист1").PrintOut Copies:=1, Preview:=True      

     ' Показываем UserForm снова после закрытия окна предпросмотра         
      UserForm1.Show
End Sub
Изменено: YGrigor18 - 12.12.2024 12:22:07
Подскажите, как можно форму предварительного просмотра листа Excel перед печатью вывести кодом VBA поверх формы UserForm1 ?, Подскажите, как можно форму предварительного просмотра листа Excel перед печатью вывести кодом VBA поверх формы UserForm1 ?
 
online,  Дмитрий(The_Prist) Щербаков,  спасибо!
потестирую оба варианта, решения вполне подходят.
Изменено: YGrigor18 - 10.12.2024 16:47:26
Подскажите, как можно форму предварительного просмотра листа Excel перед печатью вывести кодом VBA поверх формы UserForm1 ?, Подскажите, как можно форму предварительного просмотра листа Excel перед печатью вывести кодом VBA поверх формы UserForm1 ?
 
online, добрый день! красивое решение.
при выполнении кода, к сожалению, ошибка на строке:
previewOpen = Application.CommandBars("Print Preview").Visible

Ругается на "Print Preview", имя не воспринимает - требует индекс. (?)
Страницы: 1 2 3 След.
Наверх