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

Страницы: 1
Убрать нули в начале каждой ячейки
 
Возможны варианты.
Убрать нули в начале каждой ячейки
 
Добрый день.

Мне требовалось убрать нули, стоящие в начале ячеек одного столбца. Например, из 0051474443 и 0000895079 должно было получаться соответственно 51474443 и 895079. Эту задачу я решил через специальную вставку, прибавив ко всем ячейкам ноль. Как можно решить аналогичную задачу с помощью VBA и массива, если ячейки будут содержать не число, а текст?

Я написал вот такой код, но он не работает:
Код
Sub Macro()

Dim i As Long
Dim myArray() As Variant

myArray = ActiveSheet.ListObjects("Table1").ListColumns(1).DataBodyRange.Value

For i = LBound(myArray) To UBound(myArray)
If Len(myArray(i)) > 1 Then
Do While Left(myArray(i), 1) = 0
myArray(i) = Right(myArray(i), Len(myArray(i)) - 1)
Loop
End If
Next i
End Sub
Пример файла во вложении.
Выбор ячеек по условию и перенос в другую таблицу
 
Добрый день.
Есть две умные таблицы, размещенные на двух листах. У меня не получается написать макрос, реализующий следующую логику:

1. Из таблицы на Листе 2 выбрать ячейки из столбца Function ID, которым соответствует значение TRUE в столбце Calc. Сама таблица умная, ее границы заранее неизвестны.
2. Отобранные ячейки нужно перенести в первую ячейку столбца Function ID таблицы на Листе 1. Таблица также умная, соответственно, ее границы должны расшириться на количество строк, соответствующее количеству добавленных ячеек.

Подскажите, пожалуйста.
Очистка ранее выбранного значения Combobox при повторном открытии книги
 
По ходу чтения понял, что для пользователя должно быть удобнее иметь возможность очищать значения по щелчку кнопки, поэтому воспользовался Вашим кодом и завязал его на кнопку.
Спасибо, работает.
Очистка ранее выбранного значения Combobox при повторном открытии книги
 
Добрый день.

Имею несколько комбобоксов, берущих свои значения из именованных диапазонов нескольких умных таблиц. Начальное значение - ничего не выбрано.
Как реализовать сброс выбора значения при повторном открытии книги, чтобы книга открывалась "как новая"?

Догадываюсь, что нужно поместить код в Private Sub Workbook_Open(), но до самого кода додуматься не могу.
Пример с одним комбобоксом во вложении.
Использование именованного диапазона в свойстве ListFillRange в ComboBox
 
Спасибо, действительно заработало.
Избавляться от умной таблицы не хочется, не могли бы Вы кратко пояснить синтаксис вот этого фрагмента кода?
Код
.Address(1, 1, external:=True)
Потребуется ли его изменить, если первая ячейка диапазона будет не А1 того листа, на котором он размещен?
Использование именованного диапазона в свойстве ListFillRange в ComboBox
 
Сделал, как Вы изначально предлагали.
Не работает.

Убрал из файла все лишнее и прикрепил.
Использование именованного диапазона в свойстве ListFillRange в ComboBox
 
К сожалению, все равно не работает. Список открывается в виде одной пустой строки.

Полностью код списка теперь выглядит так:
Код
Private Sub ComboBox1_Click()
ComboBox1.ListFillRange = "Решение.xlsm!CostCenters"
Me.ComboBox1.DropDown
End Sub
Изменено: Клоп Филимон - 13.09.2024 12:08:55
Использование именованного диапазона в свойстве ListFillRange в ComboBox
 
Добрый день.

Нужно сделать выпадающий список, ссылающийся на диапазон данных переменной длины, используя ComboBox из перечня элементов Active X.

Через Диспетчер имен я создал именованный диапазон и назвал его CostCenters, однако мне не удается вставить это имя в ListFillRange в ComboBox, оно просто не сохраняется, поле становится пустым, как только я кликаю мышкой в любом другом месте или нажимаю Enter. Если же я указываю его в виде, например, $A1:$A5, то сохраняется без проблем.

Я пытался поменять свойство ListFillRange через VBA, используя следующие варианты кода:
Код
Private Sub ComboBox1_Change()
ComboBox1.ListFillRange = "=CostCenters"
End Sub
Код
Private Sub ComboBox1_Change()
ComboBox1.ListFillRange = "CostCenters"
End Sub
и тоже безрезультатно: список пуст, в свойстве ListFillRange пусто.

Аналогично происходит и с другими именами.

Любопытно, что я скачал файл с примером, в котором использован точно такой же прием, и там свойство ListFillRange заполнено, оно никуда не исчезает, если его убрать и снова добавить.

К сожалению, я не могу выложить свой файл, он содержит чувствительные данные. Помогите, пожалуйста, понять, куда копать.
Добавление новых строк и обновление существующих в автоматическую выгрузку
 
А как именно обновлять данные с выгрузки на листе Sheet1? Порядок не меняется, но сам файл не дополняется, а перезаписывается.

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

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

Есть потребность добавить к списку пользовательский столбец, где указывать вручную информацию, отсутствующую в БД. Как это лучше реализовать?

В качестве варианта рассматривается создание локальной копии списка на произвольную дату и макроса, который будет по расписанию обращаться к вновь выгружаемым версиям файла, сравнивать их по идентификатору с сохраненной локальной копией, добавлять в копию строки с не найденными идентификаторами и обновлять существующие.
Существуют ли другие решения?
Цикл с диапазоном из несмежных ячеек
 
Ваш еще не пробовал, потому что мне нужно его докрутить: в таблице помимо данных, к которым применяется форматирование, есть еще шапка и строки ниже области данных, которые форматировать не требуется. За идею спасибо, подход вроде бы понял, буду разбираться.
Цикл с диапазоном из несмежных ячеек
 
Можно и с примером, и с попыткой скормить:
Код
    Range("B3,D3,F3").Select
    Range("F3").Activate
    Selection.FormatConditions.AddColorScale ColorScaleType:=3
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    Selection.FormatConditions(1).ColorScaleCriteria(1).Type = _
        xlConditionValueLowestValue
    With Selection.FormatConditions(1).ColorScaleCriteria(1).FormatColor
        .Color = 8109667
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).ColorScaleCriteria(2).Type = _
        xlConditionValuePercentile
    Selection.FormatConditions(1).ColorScaleCriteria(2).Value = 50
    With Selection.FormatConditions(1).ColorScaleCriteria(2).FormatColor
        .Color = 8711167
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).ColorScaleCriteria(3).Type = _
        xlConditionValueHighestValue
    With Selection.FormatConditions(1).ColorScaleCriteria(3).FormatColor
        .Color = 7039480
        .TintAndShade = 0
Изменено: Клоп Филимон - 24.11.2023 13:38:53
Цикл с диапазоном из несмежных ячеек
 
У меня есть код VBA для условного форматирования, полученный макрорекодером:

Selection.FormatConditions.AddColorScale ColorScaleType:=3
   Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
   Selection.FormatConditions(1).ColorScaleCriteria(1).Type = _
       xlConditionValueLowestValue
   With Selection.FormatConditions(1).ColorScaleCriteria(1).FormatColor
       .Color = 8109667
       .TintAndShade = 0
   End With
   Selection.FormatConditions(1).ColorScaleCriteria(2).Type = _
       xlConditionValuePercentile
   Selection.FormatConditions(1).ColorScaleCriteria(2).Value = 50
   With Selection.FormatConditions(1).ColorScaleCriteria(2).FormatColor
       .Color = 8711167
       .TintAndShade = 0
   End With
   Selection.FormatConditions(1).ColorScaleCriteria(3).Type = _
       xlConditionValueHighestValue
   With Selection.FormatConditions(1).ColorScaleCriteria(3).FormatColor
       .Color = 7039480
       .TintAndShade = 0
   End With

Я предполагал, что можно получить нужный мне результат, скармливая ему в качестве Selection соответствующий диапазон: вначале А2, С2, Е2, затем А3, С3, Е3 и так далее. Но вот перебор диапазонов мне реализовать не удается.
Цикл с диапазоном из несмежных ячеек
 
Добрый день.

Есть задача применить условное форматирование к ячейкам, находящимся на одной строке, но в несмежных столбцах, последовательно для нескольких идущих подряд строк. Форматирование типа Color Scale (меньшее значение зеленое, большее - красное). Иными словами, вначале применяем форматирование к ячейкам А2, С2, Е2, затем к А3, С3, Е3 и так далее, цикл должен пробежать по номерам строк от такого-то до такого-то.

Я знаю, что цикл по диапазону из одной ячейки можно создать, используя конструкцию вида Range("А" & rowNum), где rowNum - номер строки, но каков должен быть синтаксис для диапазона, если ячеек не одна, а несколько, и они несмежные?
Неправильно работает фильтрация по датам
 
Добрый день.

Есть выгрузка из внешней системы.

Задача - иметь возможность фильтровать ячейки по датам (год-месяц), в том числе, с использованием сводных таблиц.
Проблема: несмотря на то, что данные в столбцах А и С представляют собой даты, в фильтре показана группировка только в пределах 2023 года, тогда как в ячейках есть и 2022.
Ощущение, что часть ячеек - это не даты, однако проверка через ISNUMBER показывает, что это не так. Перед применением фильтров все ячейки через Paste Special принудительно переводились в числе прибавлением нуля.

Пример во вложении.
Страницы: 1
Loading...