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

Страницы: 1 2 След.
Есть ли ограничения на заполнение "умных таблиц" макросами ?, на разных строках таблицы макрос ведет себя по разному ..
 
Будете смеяться, но все решилось "тупым" способом.
При поиске возможных ошибок , что бы не ловить когда возникает ошибка , а сразу видеть на каком этапе обработки возникает "незаполнение", во всех условиях добавил указывать на обрабатываемой ячейке (.Rows(lRow).Columns(iNzv)) комментарий с номером этапа.
ВСЕ ЗАПОЛНИЛОСЬ !!
Убрал комментарий  - ошибки вернулись
Тему можно закрывать
всем спасибо за участие
что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
Есть ли ограничения на заполнение "умных таблиц" макросами ?, на разных строках таблицы макрос ведет себя по разному ..
 
Цитата
написал:
или нетленное "пора менять прокладку между рулём и сиденьем
Лучше и "проще" исправить ошибку в ДНК ))
что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
Есть ли ограничения на заполнение "умных таблиц" макросами ?, на разных строках таблицы макрос ведет себя по разному ..
 
нет - винда
что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
Есть ли ограничения на заполнение "умных таблиц" макросами ?, на разных строках таблицы макрос ведет себя по разному ..
 
Добрый день.
Подскажите есть ли ограничения в работе VBA с умными таблицами ?
Субъект: файл в котором  две таблицы - первая источник данных загружаемая запросом из MS Query - ZID.ListObjects("ИД1")
вторая - ORP.ListObjects("TabORP") заполняется вручную и при определенных условиях "дозаполняется" значениями из первой.
заполнение происходит строками аналогичными :
.Rows(lRow).Columns(iIteraciya) = Application.VLookup(.Rows(lRow).Columns(iNzv), ZID.ListObjects("ИД1").DataBodyRange, 4, False)
.Rows(lRow).Columns(iIteraciya).Interior.Color = iZ
все работает прекрасно если количество строк меньше 50, если количество строк становится больше дуркует по черному , начинает пропускать строки, по непонятному алгоритму , причем после блока пропущенных строк 1-2 строки заполняются нормально. Если оставляю только незаполненные строки результат тот - же , то есть первые (примерно) 50 строк заполняются правильно , потом опять котовасия.
Что делал :
перегружал комп
убирал обновления экрана и автоматические вычисления пока работает макрос
отладчиком ловил строку - выполнялись все строки НО не записывались в ячейки !!!

Решение вроде есть - заполнить в массиве и вставить массив в столбец /таблицу, но хочется разобраться , и лениво повторно прописывать условия оформления ячеек , так же по причине того что за рамками заполняемой части таблицы хотел оставить пользователям возможность вносить доп данные которые не нужны при анализе данных, но нужны для идентификации/примечания ипр лицу заполняющему...

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

ЗЫ ПО все лицензионное MSO 2016 стандартный
что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
VBA для рядов данных диагарммы, Подмена значений value и xvalue для рядов диаграммы
 
Код
With ThisWorkbook.Worksheets("Лист1")
  MyChart.SeriesCollection(1).XValues = .Range(.Cells(2, 1), .Cells(4000, 1))
  MyChart.SeriesCollection(1).Values = .Range(.Cells(2, 2), .Cells(4000, 2))
End With

только аккуратно с worksheets - если есть листы диаграмм лучше Sheets(i)

что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
VBA для рядов данных диагарммы, Подмена значений value и xvalue для рядов диаграммы
 
Ссори за первый вопрос - заработался , тут все просто .SeriesCollection(i).XValue и Value
Второй -устал биццо ((
что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
VBA для рядов данных диагарммы, Подмена значений value и xvalue для рядов диаграммы
 

Добрый день Гуру !

Помогите решить задачу (чур задачу не комментировать – не я её ставил).

Есть файлы с приложением к проекту по тело-технике. В каждом не менее 170 диаграмм, какие-то на рабочих листах, другие на листах диаграмм. Исходные данные для этих диаграмм находятся вне доступа (у начальных проектировщиков). Диаграммы содержат большое количество «вручную» скорректированных линий (рядов данных). На некоторых листах диаграмм несколько диаграмм. ЧАСТЬ диаграмм необходимо скорректировать – изменить значения одного или несколько рядов данных. Менять диаграммы (оформление и надписи) НЕЛЬЗЯ ! Формат 93 excell. Никогда не занимался диаграммами поэтому и прошу помощи.

Написал макрос для чтения данных из диагарммы

Код
Sub Receive_data_from_diag_to_new_sheet()Application.ScreenUpdating = FalseDim NumberOfRows As IntegerDim X As ObjectDim iCol As IntegerDim stRyad As StringDim stSheet As StringWith Worksheets("ChartData")    .Cells.ClearEnd WithiCol = 0With ActiveChartstSheet = .NameFor Each X In .SeriesCollection    stRyad = CStr(X.Name)    iCol = iCol + 1    NumberOfRows = UBound(X.Values)         With Worksheets("ChartData")            .Cells(1, iCol) = "X-" & stRyad            .Range(.Cells(2, iCol), .Cells(NumberOfRows + 1, iCol)) = Application.Transpose(X.XValues)            iCol = iCol + 1            .Cells(1, iCol) = "Y-" & stRyad            .Range(.Cells(2, iCol), .Cells(NumberOfRows + 1, iCol)) = Application.Transpose(X.Values)        End WithNext XEnd With…….End sub

Так как Excell старый и «свободных» листов на втором проекте меньше 5, а выносить данные в другой файл не хочу решил сделать следующее:

создать три листа. Первый исходные данные, второй корректировки рядов, третий итоговые значения  (ИД + Корректировки) для изменения рядов.

На первом листе данные заполняются «щёлканьем» подлежащих корректировке диаграмм из проекта. Фиксирую данные:

Индексы листов

Индексы диаграмм

Индексы рядов диаграмм (имена)

Координаты по Х для каждого ряда

Координаты для Y для каждого ряда.

Проверяя работу макроса руками менял формулы для каждого ряда (=РЯД([Имя];[Значения X];[Значения Y];[Номер графика]) ). Получается «то что доктор прописал».

Собственно вопросы :

Как эти же значения подставить используя VBA, а не «руки»? ссылаться просто на диапазон данных не подходит так как их крутили-вертели при начальном проектировании как угодно  и нужно менять именно value и Xvalue)

Как циклом обнаружить вторую диаграмму  на листе диаграмм  (пример во вложении)?

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

PS Сына жалко – он до написания мною макроса заносил значения в таблицы вручную ))

Изменено: leseal - 14.11.2017 09:21:18
что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
Слетают связи для источника данных в свобных таблицах, При пересылки письмом
 
ссори , но из твоих объяснений я не понимаю проблемы , термины "сводные тяну" мне не понятны.
Ты хочешь отдавать только сводную таблицу или хочешь что бы твои коллеги видели все изменения онлайн ?
если "онлайн" то "деревенский" способ при наличии у коллег доступа к твоей папке:
закрываешь свою книгу на изменения (пароль на изменения - "сохранить как" - "сервис"-"общие параметры"-"пароль для изменения"
далее создаешь (открываешь) файл для коллег
меню "данные"-"из других источников"-"Майкрософт query"-Выбираешь свой файл- ставишь галочку "Только чтение"- выбираешь свою таблицу (источник данных для сводной) жмешь ок
теперь коллеги будут видеть твои изменения после нажатия "записать".
но это совсем криво и по деревенски. Лучше посиди форум почитай. Подобных задач/вопросов было много.
что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
Проверка прав доступа пользователя к конкретной сетевой папке, Средствами VBA нужна проверка прав доступа к конкретной сетевой папке
 
Спасибо ОГРОМНОЕ
что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
Проверка прав доступа пользователя к конкретной сетевой папке, Средствами VBA нужна проверка прав доступа к конкретной сетевой папке
 
Добрый день Гуру.
Может кто сталкивался - помогите.
Есть файлы для менеджеров. Они содержат таблицы с внешними источниками данных (файл аксесс для конкретного филиала) часть из которых обновляется при открытии. При запуске книги отрабатывает макрос проверяющий принадлежность пользователя к группе избранных (отдельная группа в AD, к сожалению она одна так как администрировать её в полном объеме у меня нет прав , но добавляются туда пользователи только через мое согласие. Делать дубликат внутри книги с указанием пути  не подходит так как у ряда пользователей есть доступ к нескольким папкам).
По умолчанию после настройки все работает.
Проблема возникает при создании нового файла из файла "шаблона" или при попытке восстановить файл из "шаблона" (все процедуры написаны на VBA). Так как подключения имеют ссылки на конкретные пути , если файл открывает пользователь с другого филиала (нет доступа к данным другого филиала) сыплются ошибки.
Устал объяснять что на все нужно "говорить" "нет" и "отменить" а потом запускать макросы создания или восстановления . Можно ли узнать средствами VBA имеет ли пользователь доступ к конкретной папке. Путь к этой папке всегда есть внутри книги в отдельной ячейке.
Заранее Спасибо.  
Изменено: leseal - 02.12.2016 14:34:58
что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
Слетают связи для источника данных в свобных таблицах, При пересылки письмом
 
) данные на этом листе откель берутся ? лучше пример киньте - посмотрю
что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
Слетают связи для источника данных в свобных таблицах, При пересылки письмом
 
Что является источником данных для сводной : внешний источник или таблица внутри файла ? если внешний источник то какой и как построен кэш сводной через query или напрямую обращаетесь к другому файлу ? если через query к экселю то там однозначная ссылка на ваш файл....
или пример давайте или еще раз напишите "что есть проблема" ?
что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
Создание обновляемой таблицы
 
Сорри модератору, и респект участникам.
Часто на форуме ищу ответы на вопросы и обычно нахожу. Поэтому позволю себе заступиться за местных Гуру и помочь автору.
Просто напишите алгоритм того что вы хотите и Вам помогут.
Из описанного вами понял что есть несколько офисов с одинаковым ПО которые формируют ежедневные отчеты (судя по скриншоту настроено автоматическое формирование в указанное время). Отчет формируется в экселе с автоматическим присвоением имени. Делаю предположение что отчеты записываются на лист с одним и тем же именем. Привлекать разработчиков программы Вы не можете (а это сильно бы упростило задачу). В имени файла есть информация об отправителе и дате формирования отчета. Из вами написанного следует что файлы вы получаете по почте и руками раскладываете по папкам (гениально). Если описанное ИСТИНА тогда примерно Вам нужно следующее :
1. макрос который сформирует вам список файлов из папки хранения данных (вместе с подпапками)
2. макрос который соберет данные из всех однотипных таблиц хранящихся в этих файлах и добавит поле (столбец) указывающий источник данных.
3. макрос или формулы которые разобьют появившееся поле на составляющие поля "офис" и "дата".
на основе имеющейся таблицы строится сводная таблица "и кручу верчу обмануть хочу". Так же желательно из получившейся таблицы удалить не нужные значения ("нэт былэт") это сделает таблицу более читаемой (ИМХО).
Все описанные решения есть на форуме - главное знать что ищете.Удачи
что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
Формирование массива в памяти, после обработки вставка данных в таблицу, один и тот же макрос с одним и тем же объемом данных работает с разной скоростью
 
Спасибо - потестирую
что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
Формирование массива в памяти, после обработки вставка данных в таблицу, один и тот же макрос с одним и тем же объемом данных работает с разной скоростью
 
Цитата
Hugo написал: Я уже сказал про другой быстрый метод.
если не тайна - намекни
что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
Формирование массива в памяти, после обработки вставка данных в таблицу, один и тот же макрос с одним и тем же объемом данных работает с разной скоростью
 
Цитата
Hugo написал: Формируйте новый массив в памяти, выгружайте одним действием.
а в чем выигрыш будет - в том что нужно еще раз перебрать массив , определить новое количество записей, на основании этого создать новый массив , заполнить его циклом аналогичным циклу фиксации значений в ячейках и потом вставлять его - мне кажется что определение заносить данную строку или не заносить по крайней мере не медленнее ...
"Выгружать одним действием" поясните  плизз
что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
Формирование массива в памяти, после обработки вставка данных в таблицу, один и тот же макрос с одним и тем же объемом данных работает с разной скоростью
 
Все вычисления и обновления экрана выключены в самом начале макроса, Исключения для статусбара - он отображает ход выполнения..
книга большая с определением прав доступа к внешним источникам на основании логина в домене поэтому отправлять файл целиком нет смысла (день тратить на создание локальной версии).
Еще раз - он работает абсолютно нормально и быстро , но спустя какое-то время просто начинает тормозить . Тормозить начинает именно на куске кода который прислал.
Как пример при вставке 4500 строк статусбар невозможно увидеть единицу бегут десятками, через 5 минут работы аналогичный блок будет вставляться по 5 сек на строку (23 ячейки). Сымитировать торможение не всегда получается (если бы получалось была бы примерно понятна проблема).. Так как на следующий запуск опять все летит / или тормозит.. При этом повторюсь - первая часть макроса где заполняется WorkArray по времени работает одинаково !!
Макрос запускается отдельно (он не в теле другого макроса и память другими вычислениями/массивами  занята быть не может.

упрощу вопрос метод занесения ActiveCell.Offset(CurrRow - 1, CurrCol - 1).Value = WorkArray(a, CurrCol) оптимальный или лучше использовать какой-то другой ? В нем не зарыта собака ?
Спасибо за участие ответившим
что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
Формирование массива в памяти, после обработки вставка данных в таблицу, один и тот же макрос с одним и тем же объемом данных работает с разной скоростью
 
Добрый день Гуру.
Помогите чайнику.
Есть макрос который формирует массив в памяти (примерная размерность 23 поля 700 строк) и после обработки вставляет данные в таблицу.
Поставил отслеживание этапов работы. Обработка массива с вычислениями всегда проходит примерно одинаково по времени, а вот этап записи значений в ячейки отличается в ДЕСЯТКИ РАЗ.
Количество открытых файлов и их размер (как и объем занимаемой памяти не менялся). Кроме экселя ничего не запущено.
Вставляю данные кодом:
Код
    For a = 1 To UBound(WorkArray, 1)
    Application.StatusBar = "adding a line" & a & " of " & z
    DoEvents
    If WorkArray(a, 10) <> 0 Then
         CurrRow = CurrRow + 1
        For CurrCol = 1 To UBound(WorkArray, 2)
                ActiveCell.Offset(CurrRow - 1, CurrCol - 1).Value = WorkArray(a, CurrCol)
        Next
    End If
    Next

Если знаете как исправить - подскажите ПЛИЗЗЗ
что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
StatusBar в цикле перестает отображать информацию
 
Спасибо ОГРОМНОЕ
что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
StatusBar в цикле перестает отображать информацию
 
Добрый день Гуру !

Не могу понять почему перестает отображаться информация в Статусбаре.
Есть два вложенных цикла.
Код
For GP = 1 To z 
Application.StatusBar = "zapolnyaem " & GP & " iz " & z
    For ART = 1 To y
        If StockArray(ART, GP + 1) <> 0 Then
            b = b + 1
            WorkArray(b, 1) = WorkFil
            WorkArray(b, 2) = Application.VLookup(WorkFil & GpArray(GP, 2), Range("Ostatki"), 4, False)
' ...расчет 20 значений
        End If
    Next
Next.

На маленьких количествах Z все работает ОК.
Когда Z =30 и более в статусбаре отображается только до 6-8 (самое смешное что не больше и не меньше.) и потом отображаются только следующие за циклами значения. Время работы цикла ART примерно 1,5 сек (Y не менее 1000)
Если  в конце первого цикла ставлю паузу(или через msgbox ) показывает все корректно до 50 (проверял)))

Убрать проверку или что нибудьть подскажете ?
Заранее спасибо
что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
восттановление связи "умной таблицы" с внешним источником
 
Добрый день Господа.

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

Заранее спасибо
что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
Выборка последних значений по дате, обработка подобно запросу в SQL или ACCESS
 
Принято - Спасибо
что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
Выборка последних значений по дате, обработка подобно запросу в SQL или ACCESS
 
общаемся с best
Изменено: leseal - 30.07.2015 11:01:02
что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
Выборка последних значений по дате, обработка подобно запросу в SQL или ACCESS
 
Ошибка
что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
Выборка последних значений по дате, обработка подобно запросу в SQL или ACCESS
 
тяжко... ))
наверное проще полностью объясню суть реализуемой задачи

менеджеры собирают информацию в форму данные из которой преобразуются в таблицу пример которой выложен.

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

но решил для себя  что мне нужен срез на сегодняшнюю дату. Как пример город Мухосранск у первого клиента  были  в 1, 2 и 3 месяце текущего года, у второго только в 1 у третьего в 1 и 2.
я решил что под "сегодняшним срезом" буду понимать последнюю имеющуюся информацию по конкретному магазину. Соответственно для первого магазина это информация с 3 месяца, для второго с 1 месяца , для третьего с 2месяца.

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

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

по той же причине не могу использовать sql так как обращение к базам 1с в формате скуля запрещено лицензионным соглашением.
а айтишники кроме программирования в 1с и настраивать компы с телефонами cisco ничего не умеют.

помогите а......

так как данные просматриваю только в формате сводных таблиц вариант с "давайте сформируем отдельную" не катит )) просто количество филиалов 9 а магазинов больше 9000 еще одна "табличка" смерти подобна
скайп mobile.leseal но доступен только в рабочее время или по договоренности
Изменено: leseal - 30.07.2015 08:14:00
что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
Выборка последних значений по дате, обработка подобно запросу в SQL или ACCESS
 
Что бы совсем понятно было это два запроса в ассess (второй пункт)
1запрос - выбирает данные с максимальной датой без учета количества

SELECT РД.Магазин, РД.Артикул, РД.Фабрика, РД.ВидДанных, РД.Формат, РД.ТипФирмы, РД.НП, РД.СФ, РД.ФО, РД.Адрес, РД.Обои, Last(РД.Дата) AS [Last-Дата], РД.Составитель, РД.филиал
FROM РД
GROUP BY РД.Магазин, РД.Артикул, РД.Фабрика, РД.ВидДанных, РД.Формат, РД.ТипФирмы, РД.НП, РД.СФ, РД.ФО, РД.Адрес, РД.Обои, РД.Составитель, РД.филиал;
второй запрос формирует нужную таблицу (в отличии от задания не добавляю префикс а меняю шрифт на верхний регистр что тоже приемлемо)
SELECT РД.Магазин, РД.Артикул, РД.Количество, РД.Фабрика, UCase$([РД].[ВидДанных]) AS ВидДанных, РД.Формат, РД.ТипФирмы, РД.НП, РД.СФ, РД.ФО, РД.Адрес, РД.Обои, РД.Дата, РД.Составитель, РД.филиал
FROM Запрос1 INNER JOIN РД ON (Запрос1.Артикул = РД.Артикул) AND (Запрос1.Магазин = РД.Магазин) AND (Запрос1.Фабрика = РД.Фабрика) AND (Запрос1.ВидДанных = РД.ВидДанных) AND (Запрос1.Формат = РД.Формат) AND (Запрос1.ТипФирмы = РД.ТипФирмы) AND (Запрос1.НП = РД.НП) AND (Запрос1.СФ = РД.СФ) AND (Запрос1.ФО = РД.ФО) AND (Запрос1.Адрес = РД.Адрес) AND (Запрос1.Обои = РД.Обои) AND (Запрос1.[Last-Дата] = РД.Дата) AND (Запрос1.Составитель = РД.Составитель) AND (Запрос1.филиал = РД.филиал);
Изменено: leseal - 29.07.2015 18:51:14
что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
Выборка последних значений по дате, обработка подобно запросу в SQL или ACCESS
 
и если взялся отпиши расценки тут или в скайп (в профиле)
что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
Выборка последних значений по дате, обработка подобно запросу в SQL или ACCESS
 
нет - поле количество вообще игнорируется на втором шаге (при выборке строк) и указывается только значение из этих строк когда оные определены. Т.е. по барабану число когда определяем номера строк, а когда их определили берем значение из них.
Что бы было понятнее это количество мест в магазинах которое занято конкретным типом продукции конкретного производителя (это зашито в артикуле и фабрике). Так как данные по магазинам собираются с разной периодичностью при выполнении этой задачи я смогу как смотреть хронологию изменений в конкретном магазине по выставке(дистрибуции)  и количеству мест в магазине , так и получить условный срез "на сейчас" который отобразит последнюю информацию по каждому магазину (вид данных меняется на вид данных с префиксом "_".
что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
Выборка последних значений по дате, обработка подобно запросу в SQL или ACCESS
 
на момент работы макроса - текущая
что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
Выборка последних значений по дате, обработка подобно запросу в SQL или ACCESS
 
да
что бы взбодриться достаточно стукнуть голой ногой по ножке кровати
Страницы: 1 2 След.
Наверх