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

Страницы: 1
Удалить текст до первой запятой с конца, Подбор формулы для обработки текста
 
Можете через регулярки сделать

Убрать все после первой запятой;
RegExpReplace (Ячейка с Вашим текстом; ",.*"; "")
Результат -> Результат -> Lobnya   g

Убрать все после крайней правой запятой;
RegExpExtract(Ячейка с Вашим текстом;"(.*)\s(.*),\s")
Результат ->  Lobnya   g, Moskovskaya obl, Московская область, Лобня, улица Некрасова,
Изменено: Andreybukh - 08.11.2023 20:33:21
Глобальные переменные (Модификаторы доступа)
 
Добрый вечер.
У меня есть процедуры для открытия книг по пути

Option Explicit
Dim iPath As String

Private Sub SELECT_DIR_NSI()
   iPath = ActiveWorkbook.Path & "\REQ_NSI"
   Set Wb = Workbooks.Open(Filename:=iPath)
End Sub

Sub SELECT_DIR_PRICE()
   iPath = ActiveWorkbook.Path & "\DIR_PRICE"
   Set Wb = Workbooks.Open(Filename:=iPath)
End Sub

Sub SELECT_DIR_ADDRESS()
   iPath = ActiveWorkbook.Path & "\DIR_ADDRESS"
   Set Wb = Workbooks.Open(Filename:=iPath)
End Sub

1. Можно ли как-нибудь вынести объектную переменную отдельно для оптимизации кода?
2. Как сделать iPath = ActiveWorkbook.Path доступную для использования во всех открытых книгах?

Я немного разбираюсь в JAVA и там это решается модификаторами доступа, а в VBA не понимаю как это предусмотрено.
Автоинкремент
 
Добрый день.
Как лучше написать тему?
Автоинкрементация строк?
Автоинкремент
 
Добрый день.
Подскажите как исправить дебаг.
Я использую классический макрос для автоинкремента.
При активации ячейки в колонке 2, происходит проверка на пусто и если ячейка слева пустая,
то ищем максимальное значение, далее к нему делаем +1.
Проблема возникает если в колонке 2, я протягиваю несколько значений.
Дебажит.

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

<Private Sub Worksheet_Change(ByVal Target As Range)

   If Target.Column = 2 Then
       If Target.Offset(0, -1).Value = "" Then
           Target.Offset(0, -1).Value = Application.WorksheetFunction.Max(Columns("A")) + 1
       End If
   End If
   
End Sub>
Изменено: Andreybukh - 17.09.2023 17:21:19
Конструктор объектов, Создать объект в классе
 
Добрый вечер. У меня есть простенькая объектная модель на JAVA. Суть ее в том что бы через конструктор присваивать параметры объектам.
Как на VBA реализовать такой же аналог? По каким ключевым словам искать на форуме аналогичные решения?

public class ПАРАМЕТРЫ
{    String Вид_линовки; String Вид_товара; String Вид_фиксирующего_элемента; float Длина; String Количество_листов;
   String Материал_обложки; int Плотность_бумаги = 180;
}

    class Канцтовары {public static void main(String[] args) {

       ПАРАМЕТРЫ Блокнот = new ПАРАМЕТРЫ(); - // Конструктор для нового объекта (Блокнот) типа данных Параметры использует;
Блокнот.Вид_линовки = "Без линовки, Клетка, Линейка";
       Блокнот.Вид_товара = "Блокнот";
       Блокнот.Длина = 210;

       ПАРАМЕТРЫ Тетрадь = new ПАРАМЕТРЫ(); - // Конструктор для нового объекта (Тетрадь) типа данных Параметры
       Тетрадь.Вид_линовки = "Без линовки, Клетка, Линейка, Для свободной записи";
       Тетрадь.Вид_товара = "Тетрадь";
       Тетрадь.Количество_листов = ">=10, >=20, >=30";

       System.out.println(Блокнот.Вид_линовки);
       System.out.println(Тетрадь.Вид_линовки);
       System.out.println(Блокнот.Плотность_бумаги);
   }
}
Использование Target.Column
 
Спасибо! Сработало. Теперь можно смело добавлять и удалять колонки без корректировки кода.
Использование Target.Column
 
Готово
Использование Target.Column
 
Добрый день.
В инете нашел макрос который при наступлении события проставляет дату этого события в соседнюю ячейку.

<For Each cell In Target                                    
   If Target.Column = 17 Then
         With cell.Offset(0, 1)                    
            .Value = Now
            .EntireColumn.AutoFit                            
          End With
  End If
Next cell>

мне необходимо вместо колонки 17, подставить название столбца умной таблицы.
попытался так, но ничего не работает
<a = Sheets("SH_DIR_CATALOG").ListObjects("DIR_CATALOG").ListColumns("PRICE").Range.Value
If Target.Column = a Then>
как такие вещи правильно писать?
Изменено: Andreybukh - 29.10.2022 23:40:55
Запуск макроса только в активной книге
 
Вот решение. Подскажите как заметить постоянный диапазон, на Selection?
Sub UNIC()
   Dim z, i&
   z = Range("D2:D" & Range("D" & Rows.Count).End(xlUp).Row).Value
   With CreateObject("scripting.dictionary"): .CompareMode = 1
       For i = 1 To UBound(z)
           If Not .exists(z(i, 1)) Then .Item(z(i, 1)) = 0: .Item(z(i, 1)) = .Count
       Next
       For i = 1 To UBound(z): Range("A" & i + 1) = .Item(z(i, 1)): Next
   End With
End Sub
Изменено: Andreybukh - 11.06.2022 23:58:47 (Добавил вопрос)
Справочник по элементам RibbonX
 
Добрый день. Подскажите в какой оболочке можно создать свою боковую панель с листами?
Удаление множества листов макросом
 
Спасибо большое! Буду тестить.
Удаление множества листов макросом
 
Добрый день.
У меня в книге реализовано удаление листов по (CODENAME)
Код
Application.DisplayAlerts = False
  Sheet02.Delete
  Sheet04.Delete
  Sheet05.Delete
Application.DisplayAlerts = True

1. Если лист по какой то причине не находится в книге или изменен Codename, то марос останавливается. Как это избежать?
2. Можно упростить код что бы не писать для каждого листа .Delete? Например все листы загнать в переменную и один раз прописать для нее удаление.

Заранее спасибо!
Изменено: vikttur - 18.08.2021 23:05:07
Номер для каждого уникального значения
 
Цитата
PooHkrd написал:
Вариант на Power Query. Обновляете таблицу, она добавит номера, если они не заполнены. Можете добавлять строки с новыми товарами потом обновить и радуетесь.Скрытый текстКод ? 1234567891011121314let    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],    AddedIndex = Table.AddIndexColumn(Source, "ПорядокСтрок", 0, 1),    GroupedRows = Table.Group(AddedIndex, {"Товар"}, {{"таб", each _, type table }}),    AddedCustom = Table.AddColumn(GroupedRows, "Номер", each List.Max([таб][Номер]), type number),    FilteredRows = Table.SelectRows(AddedCustom, each ([Номер] = null)),    RemovedColumns = Table.RemoveColumns(FilteredRows,{"Номер"}),    AddedIndex1 = Table.SelectRows(AddedCustom, each ([Номер] <> null)) & Table.AddIndexColumn(RemovedColumns, "Номер", List.Max(AddedCustom[Номер]) + 1, 1),    AddedCustom2 = Table.AddColumn(AddedIndex1, "таб2", each let n = [Номер] in Table.AddColumn( Table.RemoveColumns([таб],{"Номер"}), "Номер", each n)),    таб2 = Table.Combine(AddedCustom2[таб2]),    SortedRows = Table.Sort(таб2,{{"ПорядокСтрок", Order.Ascending}}),    SelectedColumns = Table.SelectColumns(SortedRows, Table.ColumnNames(Source))in    SelectedColumns

Прикрепленные файлы
Задача (нумерация уникальных значений).xlsx  (18.16 КБ)


Вот горшок пустой, он предмет простой...
Спасибо! Вот это решение! Класс!
Вот только я полный чайник в PQ и в языке "М"
- Не прошу тратить время на мое обучение, но если есть ссылка на ресур подобных уроков, то скиньте Please.
- Можноли через PQ разносить данные по формам? Например в накладные или иные шаблоны?
Изменено: Andreybukh - 24.10.2020 17:38:51
Номер для каждого уникального значения
 
Вот это решение!
Класс!
Вот только я полный чайник в PQ и в языке "М"
- Не прошу тратить время на мое обучение, но если есть ссылка на ресур подобных уроков, то скиньте Please.
- Можноли через PQ разносить данные по формам? Например в накладные или иные шаблоны?
Номер для каждого уникального значения
 
Цитата
Светлый написал: ... один раз рассчитать по этой формуле а потом заменить на значения.
Могут новые товары добавляться, поэтому необходим постоянный пересчет будет.
Буду пытаться через свод выставлять уникальные значения, а далее через индекспоискпоз проставлять напротив каждого товара.
Номер для каждого уникального значения
 
Благодарю Вас. Нумерует все строки одним номером. (1)

Я бы мог решить через свод, но у меня данные для закупочных процедур подтягиваются в форму по ИНДЕКС ПОИСКПОЗ и для этого нужен уникальный ID на одиноковый товар. Свод не совсем подходит для текстовых форматов внутри, поэтому пытаюсь создать свой свод через уникальные ID.
Номер для каждого уникального значения
 
Светлый, приветствую Вас.
Мощное решение формулой, но при сортировке не работает. :cry:

Цитата
Андрей VG написал: ... несколько человек напрасно потратили время на вас, вы не находите?
Приветствую.
Не нахожу.
Думаю что решение через формулу больше отвлекает людей чем решение через VBA. Помимо прочего, эти люди (спасибо им огромное) по-моему не просили защиты от Вас.
Если нет вариантов или желания решить задачу, то просто пройдите мимо.
Номер для каждого уникального значения
 
Светлый, приветствую Вас.
Мощное решение формулой, но при сортировке не работает. :cry:  
Номер для каждого уникального значения
 
Спасибо, но мне нужно что бы диапазо был с возможностью сортировки.
Массив около 10.000 строк и в дальнейшем из него получается спецификация из уникальных названий (по аналогии со сводной таблицей)
Должна быть возможность динамичного изменения при постоянной смене названий товаров и возможность сортировки.
Может есть VBA решение? :(  
Номер для каждого уникального значения
 
Добрый день.
Подскажите как пронумеровать каждое уникальное значение в таблице?
Перенос данных из одного листа в другой с последующим объединением, Перенос и копирование
 
Благодарю Вас Настя!
Классное решение!
Перенос данных из одного листа в другой с последующим объединением, Перенос и копирование
 
Добрый день.
Подскажите решение для переноса данных из одного листа на другой в объединенные ячейки.
Файл с данными во вложении.
Необходимо что бы данные из листа ("ЛИСТ1") попали на лист ("ЛИСТ2").
При этом
часть данных из ("ЛИСТ1") (выделил желтым) попала в ("ЛИСТ2) в диапазон (выделил желтым)
часть данных из ("ЛИСТ1") (выделил синим) попала в ("ЛИСТ2) в объединенную ячейку (выделил синим)
часть данных из ("ЛИСТ1") (выделил розовым) попала в ("ЛИСТ2) в объединенную ячейку (выделил розовым)

так же перенос должен быть ограничен данными на ("лист1")
Где найти таблицу кодов цветов?
 
Добрый день.
Серый цвет очень плохо видно.
Под каким он номером?  
Страницы: 1
Loading...