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

Страницы: 1
Создание словаря из таблицы-матрицы
 
Добрый день, уважаемые форумчане!

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

Сейчас код реализован так:
Скрытый текст
Изменено: CRAFT - 10.12.2023 13:04:43
Поиск текста в ячейке и выделение его цветом
 
Здравствуйте, уважаемые форумчане!
подскажите, есть ли решение задачи с помощью vba Excel?

Задача следующая: найти в каждой ячейке определенный текст (несколько результатов в ячейке) и выделить только его другим цветом.

Варианты исходных данных

Вариант 1 (предпочтительней)
искомая часть текста: с начала строки до символа "-"     [2901XT1-2]
и начиная с пробела до символа "-"_                                [_2901XT1-2]

либо

Вариант 2
искомая часть текста для выделения будет приведена в массиве(ячейках).

Пока решение данной задачи вижу следующее: копирование данных в Word, поиск искомых частей текста и их выделение, копирование в Excel.
Поиск ячейки с текстом и объединение смещенных от неё ячеек
 
Здравствуйте!
Помогите пожалуйста написать макрос!
Упрощенный пример требуемой задачи ниже и в приложении.

Требуется:
1. найти каждую ячейку с текстом (искомый текст указывается массивом)
2. справа от нее и вниз объединить ячейки 3 ячейки (например искомый текст нашелся в "A2", тогда объединить ячейки "B2" "B3" и "B4" в одну, а ячейки "C2" "C3" и "C4" в другую.
3. Аналогично по другим ключевым словам.

Заранее спасибо!
Транспонирование данных, диапазоны ограничены разделителями
 
Здравствуйте уважаемые форумчане!

Подскажите макрос для транспонирования данных находящихся в столбце А. Каждый диапазон из этого столбца, который нужно транспонировать строку, разделён. В моём случае это:
"(" - начало диапазона
")" - конец диапазона

Данным кодом я нахожу первый диапазон, дальше мне видется вырезать и транспонировать в столбец В и циклом перейти к следующему.
Код
Dim iA As Long, iB As Long
    iA = Columns("A").Find("(", [A1], LookIn:=xlValues, SearchDirection:=xlNext).Row
    iB = Columns("A").Find(")", [A1], LookIn:=xlValues, SearchDirection:=xlNext).Row
Range(Cells(iA, 1), Cells(iB, 1)).Select
Но конечно есть и более удачное и элегантное решение!

Заранее спасибо!
Сортировка столбцов циклом в каждой строке
 
Здравствуйте, уважаемые форумчане!
Задача отсортировать ячейки по убыванию отдельно в каждой строке (исключая первую строку заголовков и первый столбец названий)
начиная с ячейки B2
количество используемых ячеек в каждой строке разное
количество строк тоже разное (в разных проектах).

Авторекодером записал сортировку для одной строки.
Код
Option Explicit
Public endRow As Integer

Sub Сортировка_строки()

endRow = Sheets("исходник").Cells(Rows.Count, 1).End(xlUp).Row

' cортировка одной строки
    ActiveWorkbook.Worksheets("исходник").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("исходник").Sort.SortFields.Add2 Key:=Range("B2:R2" _
        ), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("исходник").Sort
        .SetRange Range("B2:R2")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlLeftToRight
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
Для сортировки остальных строк я думаю использовать цикл с перебором каждой строки до конечной (EndRow),
но с синтаксисом цикла я пока не дружен.
Подскажите пожалуйста структуру цикла для данной задачи!

Заранее спасибо!
Ошибка 1004 при попытке выполнить ActiveWorkbook.SaveAs, если используется переменная папки.
 

Здравствуйте уважаемые форумчане!

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

Итак макрос 1  создает в целевой папке (/2019)  новую папку и конкретным именем (значение из ячейки b3) и сохраняет в нее книгу с именем (данные из ячейки b4).

Раньше все работало. Сейчас выдает ошибку (1004) на строке   ActiveWorkbook.SaveAs FileName:=vFile, FileFormat:=xlExcel12. Если из процедуры убрать переменную новой папки, то все работает хорошо. Мое мнение что это связано с буфером переменной (новой папки).

Код
 Sub SaveAsO()
    Const strRootFolder As String = "E:\Работа\2019\"
    Dim zName As String, zAdress As String, vFile As String
    zName = Replace_symbols(ActiveWorkbook.Sheets("dannye").Range("b3").Value)  'имя папки
    zAdress = Replace_symbols(ActiveWorkbook.Sheets("dannye").Range("b4").Value)  'имя файла (адрес)
    ' если папка есть, то пропуск, если нет, то создаем 
    If Dir(strRootFolder & zName, vbDirectory) = "" Then
        MkDir strRootFolder & zName
    End If
   
    vFile = strRootFolder & zName & "\" & zAdress & ".xlsb" 'имя и путь файла
    ' сохраняем
   ' On Error Resume Next
    ActiveWorkbook.SaveAs FileName:=vFile, FileFormat:=xlExcel12
End Sub

Макрос 2 транслитерация формул. Раньше работало хорошо, сейчас выдает след.текст: "??"

Код
Sub ForTran() 'перевод формул РУС-ENG
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}"): .SetText ActiveCell.Formula: .PutInClipboard: End With
'MsgBox ActiveCell.Formula & vbCrLf & _
'"" & "Перевод помещён в буфер обмена", , "Formula Translate"
End Sub

На других компьютерах все работает. Подскажите куда копать, где что можно почистить?

Ошибка с активацией книги при копировании с помощью надстройки
 
Здравствуйте,
столкнулся с ошибкой при копировании листов из надстройки в активную книгу (в уже активную, либо в новую)
При выполнении данного макроса копируется из надстройки только один лист, другой (другие) не копируется. НО при выполнении макроса с помощью F8 все листы копируются.
Код
Sub NewBook()
 On Error Resume Next
Workbooks.Add
        Лист01.Copy before:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
        Лист02.Copy before:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
        Лист03.Copy before:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)

End Sub

при добавлении в макрос строчек повторной активации книги после каждой инструкции все листы успешно копируются

Код
Sub NewBook2()
 On Error Resume Next
'Workbooks.Add
Workbooks("книга18").Activate
        Лист01.Copy before:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
Workbooks("книга18").Activate
        Лист02.Copy before:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
Workbooks("книга18").Activate        
        Лист03.Copy before:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
End Sub
Вопрос: из-за чего возникает данная ошибка как обойти данную ошибку без повторных активаций книги (тем более если название книги может быть разным).


Заранее спасибо.
Изменение даты с помощью кнопки spinbutton, Настройка начального значения (текущей даты) spinbutton
 
Добрый день!

   Помогите настроить кнопку Spinbutton для изменения даты (в сторону увеличения и уменьшения).
Затруднение возникло в том, что при нажатии кнопки spinbutton текущая дата сбивается (я предполагаю, что все дело в начальном значении spinbutton). Прописал в Value  значение 43621, вроде стало получаться изменение с сегодняшней даты, но в самом начале изменения перепрыгивает через несколько дней, а потом нормализуется.

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

Подскажите как убрать ошибку определения последней строчки таблицы если нужно: отфильтровать таблицу, скопировать отфильтрованные данные и вставить их в конец другой таблицы этого же листа.
Код
Sub Copy_to_2()
        Лист1.Range("$J3:$K3").AutoFilter Field:=1, Criteria1:="<>"
        Лист1.Range("J3:K" & Cells(Rows.Count, 1).End(xlUp).Row).Copy Cells(Rows.Count, 7).End(xlUp).Offset(2)
        Лист1.Range("$J3:$K3").AutoFilter Field:=1
End Sub

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

Заранее спасибо.

Транспонирование таблицы по условию
 
Здравствуйте уважаемые форумчане!

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

образец и исходные данные прилагаю,


Заранее спасибо
Замена имени листа в формуле в макросе на переменную
 
Здравствуйте,

в макросе прописана формула листа типа:
Код
Sub d()
    With Лист2.Range("A1:D1")
        .Formula = Array("=Проверка!A1 + Проверка!E1") 'с листа Проверка 
        .Value = .Value
    End With
End Sub
можно ли в таком коде заменить имя листа Проверка на переменную и подставить в формулу?
что-то типа такого?
Код
Sub d2()
    With Лист2.Range("A1:D1")
dim z as variant
z = "Проверка!"
        .Formula = Array("=z & A1 + z & !E1") 'с листа Проверка 
        .Value = .Value
    End With
End Sub

или части формулы присвоить имя через диспетчер имен и таким образом сократить длину формул?

Меняется условное форматирование при пролистывании экрана.
 
Здравствуйте, столкнулся с такой ситуацией.

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

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

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

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

на всех тестируемых компьютерах Windows 10
Версия Excel на глючном компе 2019, на остальных 2016

Файл на всякий случай прикладываю.
Изменено: CRAFT - 12.03.2019 23:42:53
Удаление строк по значениям в нескольких ячейках
 
Здравствуйте!

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

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

Думаю что одним из вариантов является добавление переменной и условия, но в синтаксисе кода пока плутаю.

P.S. строк может быть много, поэтому скорость выполнения кода стоит на первом месте.

Код
' удаление строк по значению
Sub УдалениеСтрок()
Application.ScreenUpdating = False
Dim ra As Range, delra As Range, itxt As String
itxt = "край"
With ActiveSheet
    For Each ra In .Range("B4:B" & 13)
        If Not ra.Find(itxt, , xlValues, xlPart) Is Nothing Then
            If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
        End If
    Next
End With
If Not delra Is Nothing Then delra.EntireRow.Delete
 Application.ScreenUpdating = True
End Sub
Изменено: CRAFT - 11.03.2019 20:16:50
Упрощение кода макроса "Формулы макросом" для облегчения записи без потери быстродействия
 
Здравствуйте,
в учебно-познавательных целях (а если получится удачное решение, то и возьму на вооружение) решил формулы в книге заменить на макросы. Но переводить все формулы в макросы (известным мне способом, пример во вложении) довольно долго и неэффективно.
Прошу подсказать, как можно макрос упростить для написания (не сильно тормозящим вычисления способом, так как в конечной книге будет 5-10 листов с  используемыми ячейками по 15 столбцов и до 10 000 строк в каждом. Обновление данных на каждом листе хочу сделать раздельно, привязав макрос страницы к событию открытия данного листа.

Все это задумал с целью выяснения следующих вопросов (публикую для учитывания этих аспектов при упрощении макроса с оглядкой на п. 2.6 ПРАВИЛА ФОРУМА):
1. Уменьшится ли вес файла, если большинство формул книги переведу в макросы.
2. Увеличится ли быстродействие открытия книги.
3. Увеличится ли защита формул от копирования и распространения.
4. Насколько сложно будет вносить улучшения и изменения в формулы книги и отлавливать ошибки

Прилагаю код пробного макроса
Код
Option Explicit

Sub формулы()
Application.ScreenUpdating = False
Лист1.Select

Dim iQ As Integer
iQ = 1000

'объявление переменной
Dim TextFormula As String
Dim TextFormula3 As String
Dim TextFormula4 As String
Dim TextFormula5 As String
'Dim TextFormula6 As String
'Dim TextFormula7 As String
'Dim TextFormula8 As String
'Dim TextFormula9 As String

'формулы
TextFormula = "=1+2"
TextFormula3 = "=B5+3"
TextFormula4 = "=C5+2"
TextFormula5 = "=D5+6"
'TextFormula6 = ""
'TextFormula7 = ""
'TextFormula8 = ""
'TextFormula9 = ""

'запись формул в первую используемую строку
Range("b5").Formula = TextFormula
Range("C5").Formula = TextFormula3
Range("D5").Formula = TextFormula4
Range("E5").Formula = TextFormula5
 
'заполнение результатов формул в виде текста в последующие строки
Range("b5:b" & iQ).FillDown
Range("b5:b" & iQ).Value = Range("b5:b" & iQ).Value
 
 
Range("C5:C" & iQ).FillDown
Range("C5:C" & iQ).Value = Range("C5:C" & iQ).Value
 
Range("D5:D" & iQ).FillDown
Range("D5:D" & iQ).Value = Range("D5:D" & iQ).Value

Range("E5:E" & iQ).FillDown
Range("E5:E" & iQ).Value = Range("E5:E" & iQ).Value
 
Application.ScreenUpdating = True
End Sub
Транспонировать 10 столбцов в таблицу с 1 столбцом
 
Уважаемые форумчане!
Подскажите макрос, или формулу
СУТЬ задачи: из таблицы с данными из 10 столбцов (ЛИСТ1) необходимо получить  таблицу с 1 столбцом (ЛИСТ3).

Заранее спасибо!
ввод данных макросом в активную ячейку только строго определенного столбца
 
Приветствую!
Подскажите пожалуйста код макроса:

Задача: Макрос должен записать  в активную ячейку слово "Город" и активировать нижестоящую ячейку.
Здесь проблем не возникло, макрос работает,

Код
Sub Город()

    ActiveCell.FormulaR1C1 = "Город"
    ActiveCell.Offset(1, 0).Select
    
End Sub

Но требуется также, чтобы макрос это значение записывал только в столбец Е,  Листа 1, при активной ячейке из этого столбца, но, если активна ячейка, например B3, макрос ничего не записывал.

Подстановка слов при вводе повторяющихся значений
 
При вводе повторяющихся значений в ячейки Excel подставляет повторяющиеся введенные ранее данные. Но иногда  это не срабатывает (опускаем похожие слова например вводим Кост (а были введены Кострома и Костомарово)), например вводим М (а ранее введенные слова только Москва из похожих), а слово Москва не подставляет.
Вопрос: от чего зависит подстановка слов (не смог найти данную информацию) и можно ли выполнить подстановку из списка уникальных значений, выполненного например на другом листе?
Применение фильтра в таблице и последующая нумерация строк
 
Приветствую!

Не могу сообразить как выполнить  задачу:

Требуется:  
1. настроить фильтр (в идеале макросом) по столбцу С,  со скрытием пустых ячеек и одновременно скрытие строк, содержащих только ГОД (без нахождения под ним месяцев);
2. после применения фильтра настроить автоматическую нумерацию в столбце А, исключая пустые строки и года.
Страницы: 1
Наверх