13.08.2012 11:08
а так?

Код:
Sub rmk()
 Dim ptTable As PivotTable, pvtField As PivotField, cl As Long, rw As Long, i As Long
 Application.ScreenUpdating = 0
    For Each ptTable In ActiveSheet.PivotTables
        With ptTable
        If Not (Intersect(.TableRange1, Selection) Is Nothing) Then
            For Each pvtField In .DataFields
                If Not (Intersect(.pvtField.DataRange, Selection) Is Nothing) Then
                    On Error Resume Next
                    pvtField.Caption = Split(pvtField.Name, "полю")(1)
                    pvtField.Function = xlSum
                    pvtField.NumberFormat = "0"
                End If
            Next
            Exit Sub
        End If
    End With
 Next
 Application.ScreenUpdating = 1
 End Sub
13.08.2012 12:23
Опять - ошибка - там же. :?
Миниатюры
Нажмите на изображение для увеличения
Название: 2012-08-13_112017.jpg
Просмотров: 669
Размер:	68.2 Кб
ID:	6265   Нажмите на изображение для увеличения
Название: 2012-08-13_112053.jpg
Просмотров: 645
Размер:	67.8 Кб
ID:	6266  
14.08.2012 01:25
Ну и последний вариант ) Уже попробовал на данных самостоятельно - работает.
Вообще, вслепую без данных код писать крайне сложно, вот и ошибки получаются.
Когда каждый день этим занимаешься - это одно (раньше у меня это получалось), а я в последнее время редко программирую,вот и получаются мелкие баги.

Код:
Sub rmk()
 Dim ptTable As PivotTable, pvtField As PivotField, cl As Long, rw As Long, i As Long
 Application.ScreenUpdating = 0
    For Each ptTable In ActiveSheet.PivotTables
        With ptTable
            If Not (Intersect(.TableRange1, Selection) Is Nothing) Then
                For Each pvtField In .DataFields
                    If Not (Intersect(pvtField.DataRange, Selection) Is Nothing) Then
                        On Error Resume Next
                        pvtField.Caption = Split(pvtField.Name, "полю")(1)
                        pvtField.Function = xlSum
                        pvtField.NumberFormat = "0"
                    End If
                Next
                Exit Sub
            End If
        End With
    Next
 Application.ScreenUpdating = 1
 End Sub
Кстати, если удалить строку "Exit Sub", то можно будет обрабатывать за один раз сразу несколько таблиц, если в них одновременно выделить нужные поля. А при текущем раскладе будет обработана лишь первая попавшаяся сводная таблица, которая имеет хотя бы одно выделенное поле.
14.08.2012 10:20
Теперь одним нужным макросом стало больше :D , конечно надстройкой пользоваться удобнее, но ее не возьмешь с собой везде. И не бросишь в нужную книгу. Спасибо :D

А баг действительно очень мелкий - лишняя точка - я еле нашел отличие :)
19.09.2012 14:46
Буду признателен, если кто подскажет такой момент.

У меня Excel 2007, хочу на курсы сходить, но ближайшие толоквые в моих краях Excel 2010.
Стоит ли идти? Не запутаюсь ли?

Спасибо
20.09.2012 02:22
Цитата:
viitalii У меня Excel 2007, хочу на курсы сходить, но ближайшие толоквые в моих краях Excel 2010.
Стоит ли идти? Не запутаюсь ли?
Запутаться - нет, а вот стоит ли ходить - не однозначно.
Лучше взять самоучитель и начать решать реальные нужные задачи - над первой промучаться три дня, вторую решить за день, третью - за час. А дальше - просто обрастать инструментами. Вот потом уже можно и поузнавать, вообще, разные возможности Excel, но уже не базовые: открыть файл, создать новый лист, прибавить 1 к 1, сохранить файл, закрыть файл, - а продвинутые. И советую просить провести удалённое занятие sf13. :)
27.09.2012 12:45
Здравствуйте.
Очередная головоломка :)
Есть два списка - во второй по коду нужно подтянуть значение и формат с первого списка. Впр - подтягивает только значения.
Мои мысли(точнее пути решения):
1.В надстройке Plex - есть функции "Cellcolor" и "cellfontcolor" - они определяют цвет заливки ячейки и шрифта, функция ЯЧЕЙКА("формат";B2) - формат ячейки - а вот как применить к нужной ячейке эти данные?
2. Условное форматирование - можно прописать формулу (на совпадение) - а вот как задать нужный формат?
:?: :?
Вложения
Тип файла: xlsx вопрос.xlsx (15.1 Кб, 148 просмотров)
02.10.2012 11:19
Добрый день, коллеги, у меня проблема с формулой Если, нужно её немного переделать, во вложении пример, на 18 воротах действующий шаблон для записи поставщиков на приёмку где формулы в столбце R рассчитывают время приёмки опирать на 3 условия:

Если в V 8 (столб ТИП) стоит «т» то количество артикулов умножается на 2:30 ($R$5)
Если в V 8 (столб ТИП) стоит «c» то количество паллет умножается на 4:00 ($R$6)
Если в V 8 (столб ТИП) не стоит ничего, то время приёмки следующего поставщика не присваивается.

В итоге формула времени имеет следующий вид:
=ЕСЛИ(V8="т";ОКРУГЛВВЕРХ((AA8*$R$5+R8)/0,00347222222222222;0)*0,00347222222222222;ЕСЛИ(V8="с";ОКРУГЛВВЕРХ((AA8*$R$6+R8)/0,00347222222222222;0)*0,00347222222222222; ЕСЛИ(V8=" ";"0";ЕСЛИ(V8=" ";"0";" "))))
(форм 1)

Теперь мне в неё нужно вставить ещё одно условие:
Если в столбце S появляется поставщик с определённым номером (перечень на листе 5), время будет считать по формуле: ОКРУГЛВВЕРХ((P8*$G$1+G8)/0,00347222222222222;0)*0,00347222222222222, т. е. количество должно умножаться на 2:00 мин.
(форм 2)

На 17 воротах я всё это уже реализовал, получилась следующая формула
=ЕСЛИ(Q8=1;ОКРУГЛВВЕРХ((P8*$G$1+G8)/0,00347222222222222;0)*0,00347222222222222;ЕСЛИ(K8="т";ОКРУГЛВВЕРХ((P8*$G$5+G8)/0,00347222222222222;0)*0,00347222222222222;ЕСЛИ(K8="с";ОКРУГЛВВЕРХ((P8*$G$6+G8)/0,00347222222222222;0)*0,00347222222222222; ЕСЛИ(K8=" ";"0";ЕСЛИ(K8=" ";"0";" ")))))
(форм 3)

,но она опирается на вспомогательную формулу в ячейке Q8 - = ЕСЛИОШИБКА(ВПР(H8;Лист5!$A:$B;2;1);" ")

А у меня существует острая необходимость обойтись только одной формулой.
Можно к формуле 1 как-нибудь сразу добавить условия вычисления времени (2:00 на артикул) на приёмку определённых поставщиков, номера которых находятся на листе 5.

Спасибо.
Вложения
Тип файла: zip ШАБЛОН АВИЗАЦИИ + СКЛАД С (ST).zip (75.3 Кб, 60 просмотров)
02.10.2012 12:15
Так ? :)
Вложения
Тип файла: zip ШАБЛОН АВИЗАЦИИ + СКЛАД С (ST).zip (77.9 Кб, 79 просмотров)
02.10.2012 14:20
Да, спасибо, как раз то, что надо :)
Часовой пояс GMT +3, время: 23:15.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.