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

Страницы: 1
Копирование строки и ее вставка в Умную таблицу макросом
 
Александр П., спасибо. Извиняюсь за двухлетнюю просрочку. )
Использование столбца таблицы в качестве массива для ИНДЕКС
 
Цитата
Ігор Гончаренко написал:
вам религия не позволяет проверить свое предположение или что?
Нет. Я провел соответствующий обряд, но то ли бубен сломался, то ли из меня так себе шаман. Прошу понять и простить.

UPD: Вроде разобрался. Позиция массива получается номер текущей строки +1 за счет строки заголовков, поэтому предыдущая позиция в массиве это текущая строка -2. Всем спасибо.
Изменено: V.Mozzhukhin - 05.09.2020 09:11:32
Использование столбца таблицы в качестве массива для ИНДЕКС
 
Андрей Лящук, работает. Спасибо. Я правильно понял, что в качестве массива ИНДЕКС берет из таблицы весь столбец включая ячейку с заголовком?
Высчет процентов с цен товаров, Требуется высчитать проценты с 3 столбцов для того что бы выставить розничную цену со скидкой
 
Если уж тянуть, то не до 1000, а до 10000.
Как альтернатива даблклик по тому самому нижнему правому углу на котором появляется черное жирное перекрестие в каждой ячейке с формулой.
Использование столбца таблицы в качестве массива для ИНДЕКС
 
Здравствуйте!
Подскажите, можно ли использовать название столбца "умной таблицы" в качестве первого аргумента (массив) в ИНДЕКС? Если да, то что я делаю не так? Если нет, прошу подсказать способы решения задачи.
Файлик с описанием проблеммы прилагаю.
Спасибо.

UPD: В примере на листе несколько таблиц. Если оставить одну, то ситуация не меняется. Если добавить к названию столбца назавание таблицы, проблемма тоже не уходит.
Изменено: V.Mozzhukhin - 03.09.2020 19:10:21
Копирование строки и ее вставка в Умную таблицу макросом
 
Цитата
Александр П. написал:
А вы удалите .Resize(1, 9) и проверьте результат (заполниться только ячейка в столбце "А"), потом можете погуглить, зачем и что это значит  
Я шел другим путем. Сначала погуглил, потом удалял. )) И с Range(tbl.Range.Rows.Count - 1, 1) "игрался", вместо 1 ставил 9. )) В общих чертах я понимаю, что делает Resize, но полного понимания нет. Почему мы не можем сразу определить границы диапазона  Range(tbl.Range.Rows.Count - 1, 9), а приходится делать Resize?
Цитата
Александр П. написал:
потому, что именно из за строки итогов, там "-1" и стоит, можно сделать так tbl.DataBodyRange.Rows.Count, тогда не нужно будет "-1"
Почему -1 я понял. А 1 это что там? Номер столбца же? Почему не сразу 9?
В общем кручусь вокруг -1, 1 и 9.
И 9 ведь тоже не константа, как Вы понимаете. Умная табличка может меняться. Хочется добиться универсальности, а не лазить при малейшем изменении в код.
Изменено: V.Mozzhukhin - 29.08.2018 23:29:34
Копирование строки и ее вставка в Умную таблицу макросом
 
Александр П., спасибо! Вот в таком виде работает.
Код
Sub Add_Buy()
    Set tbl = ActiveSheet.ListObjects("Закупка")
    Set sht = Worksheets("Новая закупка")
'    sht.Range("A13:I13").Copy
'Эта строка вроде как не нужна. Верно?
    tbl.ListRows.Add AlwaysInsert:=True
    tbl.Range(tbl.Range.Rows.Count - 1, 1).Resize(1, 9) = Range("A13:I13").Value
    sht.Range("C3,C4,C5").ClearContents
    Range("C3").Select
End Sub
То есть без предварительной вставки новой пустой строки в таблицу не обойтись. Но оно, вроде как, и понятно. Ведь при включенных итогах в Умную таблицу и вручную новую строку с данными не вставить без предварительного добавления пустой строки. Хотя... как мне кажется, VBA должен бы это уметь.

Александр, помогите разобраться в предложенном вами решении и доработать его. Если я правильно понял:

- tbl.Range.Rows.Count - считает количество строк в таблице, включая строку итогов;
- tbl.Range(tbl.Range.Rows.Count - 1, 1) - определяет границы диапазона, это получается пересечение предварительно вставленной пустой строки (номер строки итогов минус 1) и первого столбца таблицы, то есть одна ячейка;
- Resize(1, 9) - зачем
- = Range("A13:I13").Value - присваивает диапазону значение "A13:I13"

UPD: По поводу доработки. Если в таблице отключить строку итогов,  то запись происходит "мимо".
Изменено: V.Mozzhukhin - 29.08.2018 13:42:06
Копирование строки и ее вставка в Умную таблицу макросом
 
Kuzmich, с этой ссылки моя "модернизация" макроса как раз и началась. Не знал бы про нее, жил бы сейчас спокойно. )) Увы, не смог я оттуда извлечь нужную инфу.
Копирование строки и ее вставка в Умную таблицу макросом
 
Здравствуйте, Люди!

Есть книга, в ней лист, на листе ячейки для ввода инфы, строка куда инфа из ячеек консолидируется, макросом строка копируется и вставляется в Умную таблицу. Всё банально, благодаря Примерам Павлова. На этом банальности, для меня, человека несведущего, заканчиваются.
Проблема в том, что хотелось бы в умной таблице видеть строку итогов, но при включенных итогах макрос вставляет скопированное мимо Умной таблицы, ниже этих самых итогов. Прописал в макросе отключение итогов и преобразование таблицы в диапазон (без преобразования в диапазон, скопированное к Умной таблице не "приклеивалось") и всё заработало. Но ведь если для ListObjects("Table1").* есть .Select, .Add и .Delete должно же быть и .Paste.
Поможите, не откажите, не местные мы!
Код и файлик для экспериментов ниже.
Код
Sub Add_Buy()
'    Worksheets("Новая закупка").ListObjects("Закупка").ShowTotals = False
'    Worksheets("Новая закупка").ListObjects("Закупка").Unlist
'    n = Worksheets("Новая закупка").Range("A100000").End(xlUp).Row
    Worksheets("Новая закупка").Range("A13:I13").Copy
'    Worksheets("Новая закупка").Cells(n + 1, 1).PasteSpecial Paste:=xlPasteValues
'
'   Здесь должно быть нечто типа
   Worksheets("Новая закупка").ListObjects("Закупка").ListRows.Add AlwaysInsert:=True
'   но для вставки в Умную таблицу ранее скопированного.
'
    Worksheets("Новая закупка").Range("C5,C7,C9").ClearContents
'    Worksheets("Новая закупка").ListObjects.Add(xlSrcRange, Range("$A$17:$I$" & n + 1), , xlYes).Name = "Закупка"
'    Worksheets("Новая закупка").ListObjects("Закупка").TableStyle = "TableStyleMedium6"
'    Worksheets("Новая закупка").ListObjects("Закупка").ShowTotals = True
    Range("C5").Select
End Sub

Источник данных для выпадающего списка ActiveX из Умной таблицы
 
Хочу добавить, что основной целью написания темы был скорее не поиск срочного решения проблемы, а желание разобраться в вопросе.
Источник данных для выпадающего списка ActiveX из Умной таблицы
 
Скрытый текст


Обновленный файлик посмотрел. Намотал инфу на ус. Спасибо, мой багаж знаний пополнился.
Подождем знатоков Умных таблиц.
Изменено: V.Mozzhukhin - 17.08.2018 22:19:27
Источник данных для выпадающего списка ActiveX из Умной таблицы
 
Юрий М, нас как минимум трое. Вы, я и конечный пользователь "таблички". И если между Вами и мной пропасть, то конечный пользователь живет вообще в другой галактике. )) Я уже слышу его крики проносящиеся со скоростью света через вселенную о том, что у него не работают выпадающие списки. Поэтому вариант 1 сразу исключаем. Второй вариант, на мой взгляд, похож на костыль. Именно лист с этими списками и является основным рабочим, и книга закрывается, а значит и сохраняется и потом открывается именно на этом листе, и ЭктивШит(1)-ЭктивШит(2)-ЭктивШит(1) это какие-то лишние телодвижения, опять же, на мой дилетантский взгляд. Надо изучать. В любом случае спасибо Вам за отклик.
А в русле темы и использования того, что я хоть немного знаю, а именно свойств Умных таблиц, можете что-то подсказать?
Вот ЭТО не дает мне покоя. Говорят же это работает.
Изменено: V.Mozzhukhin - 17.08.2018 21:54:46
Источник данных для выпадающего списка ActiveX из Умной таблицы
 
Юрий М, я не силен в VBA. Ваш ответ породил во мне еще больше вопросов. Чтоб сказать подойдет или нет, придется разобраться в еще большем чем я планировал, а хотелось бы для начала понять как использовать свойства Умной таблицы, если это в принципе возможно.

По вашему варианту могу только сказать, что если первоначально книга открывается на листе с элементом ActiveX, то список открывается пустой. Чтоб он заработал, надо переключиться на другой лист и обратно, то есть должно произойти событие активации.
Источник данных для выпадающего списка ActiveX из Умной таблицы
 
 Здравствуйте, Люди умные. И добрые Люди тоже здравствуйте.

Есть книга с десятком листов, пятком макросов, несколькими списками в один столбец, для удобства наполнения преобразованными в Умные таблицы, и с несколькими другими Умными таблицами в которых используются выпадающие списки созданные с помощью Данные - Проверка данных. Есть, скажем так, итоговая Умная таблица, в которой все данные в итоге консолидируется, получается некая база данных и по которой в итоге строится Сводная таблица. С этим всё легко и просто, всё работает, всё подробно описано здесь (Умные таблицы), здесь (Выпадающие списки), здесь (Создание базы данных в Excel) и здесь (Создание отчетов при помощи сводных таблиц).
На одном из этапов внесения данных используются формы ввода с выпадающими списками созданными так же с помощью проверки данных, но хотелось бы некоторые выпадающие списки сделать на основе элемента ActiveX, чтобы получить возможность быстрого поиска элементов по первым буквам. Вот тут как раз и появилась загвоздка. Если в свойствах элемента ActiveX в параметре ListFillRange прописать диапазон в виде "Лист!A1:A100", то всё работает, но имеем известные неудобства в виде необходимости изменять диапазон в случае пополнения списка выбора. С запасом делать тоже не вариант, потому как в выпадающем списке будут отображаться и пустые элементы. Если в параметре ListFillRange прописать именной диапазон созданный с использованием функций СМЕЩ(OFFSET) и СЧЁТЗ (COUNTA), то тоже всё работает. Если же в  ListFillRange прописать диапазон данных пользуясь свойствами Умной таблицы в виде "'Лист'!ИмяТаблицы[ИмяСтолбца]" или же указать имя именного диапазона созданного с помощью свойств умной таблицы, то после нажатия Enter поле ListFillRange очищается  и выпадающий список остается пустым. Колдовство с кодом тоже не дало мне положительных результатов. Возможно, где-то ставлю не тот значок или не ту буковку. Знаний, увы, не хватает. Использование в ListFillRange свойств Умной таблицы, а не диапазона созданного с помощью функций СМЕЩ(OFFSET) и СЧЁТЗ (COUNTA), если это всё же возможно как описано здесь, позволяет избежать лишних операций по созданию дополнительных именных диапазонов. Помогите, пожалуйста, разобраться. Файл для экспериментов прилагается.

С Уважением, Виктор.
Smart tab (Умная таблица) не преобразуется снова в диапазон данных
 
Пробежался в "Запросы и подключения" по всем подключениям, обнаружил одно ссылающееся на удаленную умную таблицу, удалил подключение и всё заработало. Всем спасибо.

С Уважением, Виктор.
Smart tab (Умная таблица) не преобразуется снова в диапазон данных
 
Цитата
Vladimir Chebykin написал:
приложенная таблица не является источником данных в PP
БМВ, против того, что невозможно преобразовать обратно в диапазон связанные и добавленные в модель данных таблицы я ничего против не имею. Почему так ведут себя таблицы в модель данных не добавленные? Как это побороть? Или всё же файл "битый"? Он крученный переверченный мама не горюй. ))
Изменено: V.Mozzhukhin - 22.08.2018 16:21:34
Smart tab (Умная таблица) не преобразуется снова в диапазон данных
 
Vladimir Chebykin, это не целиком файл, а только один лист из него полученный удалением всех остальных, оригинал не проходил на форум по размеру, а копирование листа в новую книгу, как и сказал БМВ, убирало проблему.
sokol92, Думаю, что подключения не живые потому как были удалены листы на которых были связанные таблицы. Как посоветуете поступить в файле оригинале?
Smart tab (Умная таблица) не преобразуется снова в диапазон данных
 
Андрей VG, Excel последняя, по подписке Office 365. Не силен в Power Pivot, поэтому могу сказать глупости. Да, действительно, в этой книге было две таблицы которые добавлялись в модель данных и между которыми была связь (Данные-Отношения), но конкретно эта была создана отдельно путем преобразования обычной таблицы в умную.
Smart tab (Умная таблица) не преобразуется снова в диапазон данных
 
Пожалуйста.
Smart tab (Умная таблица) не преобразуется снова в диапазон данных
 
Цитата
JeyCi написал:
вы уверены?
Не знаю как автор темы, а я уверен.
Smart tab (Умная таблица) не преобразуется снова в диапазон данных
 
Столкнулся с такой же проблемой как у топикстартера. Найдено ли решение?
Страницы: 1
Наверх