Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 91 След.
Ошибка свойства Pivotitem.Showdetail, Pivot + VBA
 
Поработайте над созданием и публикацией примера, в котором воспроизводится эта ошибка.
Изменено: sokol92 - 3 Июл 2020 18:30:57
Владимир
Макросс VBA, для генерации инструций, Мне нужно написать макрос VBA, который позволит упростить написание инструкций для программистов.
 
Выложите пример (с макросом) в файле и опишите свои действия: выделил такой-то диапазон, запустил макрос TestSel, не получил желаемого эффекта (адрес именованной ячейки такой-то не заменился на имя ячейки).
Кроме того, макросы необходимо поместить в стандартный модуль, а не в модуль листа (как в предыдущей картинке).
Изменено: sokol92 - 3 Июл 2020 13:05:58
Владимир
Нужно вычислить остаток на каждый день с учётом прихода и ухода
 
Формула в ячейку E2 и протяните вниз:

=СУММЕСЛИ($B$2:$B$121;"<=" & D2; $A$2:$A$121) - СУММЕСЛИ($C$2:$C$121;"<=" & D2; $A$2:$A$121)

P.S. Более приняты следующие термины: приход - расход, поступление - выбытие (или в случае заемных средств - погашение).
Владимир
Обойти ошибку в вычисляемом поле сводной при делении на ноль
 
А я и сейчас не знаю, вот и спросил. Возможности управления PQ из VBA, как пишет Дмитрий, тоже крайне ограничены.
В идеале хотелось бы, чтобы в Excel не было действий, которые можно было бы сделать интерактивно и нельзя с помощью VBA.
Изменено: sokol92 - 2 Июл 2020 19:17:37
Владимир
Обойти ошибку в вычисляемом поле сводной при делении на ноль
 
Мы используем Excel для отображения данных корпоративных систем. Обычные сводные таблицы не сложно генерировать "на лету" с помощью Excel VBA, а вот на расширенные возможности Power Pivot пока остается только облизываться. :)  
Владимир
Обойти ошибку в вычисляемом поле сводной при делении на ноль
 
Дмитрий, спасибо! Что ж, подождем еще... :)  
Владимир
Обойти ошибку в вычисляемом поле сводной при делении на ноль
 
Цитата
PooHkrd написал:
Power Pivot наше все
А управлять им из среды Excel VBA уже можно?
Владимир
Обойти ошибку в вычисляемом поле сводной при делении на ноль
 
Правила составления формул для вычисляемых полей сводных таблиц здесь.
Изменено: sokol92 - 2 Июл 2020 16:19:13
Владимир
PQ Ошибка OLE DB или ODBC: ключу не соответствует ни одна строка таблицы
 
Успехов!
Изменено: sokol92 - 2 Июл 2020 15:47:20
Владимир
Облегчение базы данных в Эксель, Как сделать чтобы БД в эксель работала шустрее
 
Добрый день, Алексей! Вариант с отключением формул, конечно, проще всего.  А если автору нужны (промежуточные ) итоги после смены фильтра - о них шла речь в этой теме?
Владимир
PQ Ошибка OLE DB или ODBC: ключу не соответствует ни одна строка таблицы
 
Может быть, источники данных находятся на Вашем личном диске или на сетевом диске, к которому не все пользователи файла из #1 (PQ файл) имеют доступ. Надо выложить все исходные файлы на сетевой ресурс, доступный пользователям PQ файла, и изменить путь к источникам данных в PQ файле.
Зайдите на проблемный компьютер и попробуйте изменить запрос - сразу всё увидите.
Изменено: sokol92 - 2 Июл 2020 14:56:47
Владимир
PQ Ошибка OLE DB или ODBC: ключу не соответствует ни одна строка таблицы
 
А о каких источниках данных идет речь (текстовые файлы, файлы Excel, SQL базы, интернет...)?
Изменено: sokol92 - 2 Июл 2020 14:45:58
Владимир
PQ Ошибка OLE DB или ODBC: ключу не соответствует ни одна строка таблицы
 
Источник данных OLE DB (или ODBC) существует на Вашем компьютере и не существует на том компьютере, на котором выдается ошибка из #1.
Владимир
Облегчение базы данных в Эксель, Как сделать чтобы БД в эксель работала шустрее
 
Цитата
Alex77 написал: Состоит из 216 столбцов и 153104 строк. Вес 176 Мб. Есть группировки и простые формулы.
Пользуемся фильтрами.
Цитата
О'Генри написал: "Боливар очень устал и двоих ему не выдержать"
Автофильтр и формулы плохо живут вместе. При открытии файла, а также при каждом изменении автофильтра происходит перерасчет практически всех формул. Как вариант, иметь два файла c одной и той же информацией: корректируемый без автофильтра и зеркальный (копию), в котором выставлен автофильтр, а в диапазоне автофильтра все формулы изменены на значения.
Владимир
Как отсортировать 5 миллионов строк?
 
Цитата
Jack Famous написал:
можно использовать Len=32767 по-умолчанию,
Всегда так делаю. По нынешним временам такой буфер - это мизер. К сожалению, VBA не развивается. :(  
Владимир
Как отсортировать 5 миллионов строк?
 
Секунда на чтении, две на записи...  Сотня фертингов на дороге не валяется.
Владимир
Как отсортировать 5 миллионов строк?
 
Добрый день, коллеги! Андрей, в Вашем примере из #80 (и в остальных аналогичных) может ускорить выполнение параметр Len=32767 оператора Open для чтения и записи.
Владимир
Как отсортировать 5 миллионов строк?
 
На моем компьютере (Win10 -64, SSD) программа из #73 на исходных в этой теме данных (290 МБ):

Read: 4.35
Sort: 0.17
Write: 0.96

Full Time: 5.48
Изменено: sokol92 - 30 Июн 2020 16:52:49
Владимир
Автоматическое обновление уникального списка, отобранного из другого источника по условию
 
Для начала откройте в главном меню Формулы/Параметры автоматических вычислений. Должна быть птичка на "Автоматически"
Владимир
Найти пересечение по кол-ву клиентов сделавших покупки в разных магазинах
 
:excl:  
Владимир
Найти пересечение по кол-ву клиентов сделавших покупки в разных магазинах
 
Надо MMULT (как фирменный прием) добавить на аватарку БМВ v 2.2 :)  
Владимир
Ошибка: Compile error: ByRef argument type mismatch
 
Один из возможных вариантов - в Вашей надстройке переопределена функция Replace. Если это так, то подобного рода вещи (называть свои функции так же, как стандартные) не желательны. Замена в приведенном выше примере Replace на VBA.Replace может помочь.
Владимир
Макросс VBA, для генерации инструций, Мне нужно написать макрос VBA, который позволит упростить написание инструкций для программистов.
 
Вы сделали работу, которую мы планировали сделать макросом - менять в формулах адреса ячеек на их имена. :)

Попробуйте выделить ячейки и запустить макрос TestSel - он должен в формулах выделенных ячеек заменить все адреса диапазонов, у которых есть имена, на имена.

Код
Option Explicit
' Меняет в формуле ячейки ссылки на адреса ячеек на имена диапазонов
Sub CellChgFormula(ByVal Cell)
    Dim rg As Range, bChange As Boolean, formula As String, sFrom, sTo, i As Long, j As Long
    Dim matches As Object, match As Object
    Static regex As Object

    If regex Is Nothing Then
        Set regex = CreateObject("Vbscript.Regexp")
    End If
    regex.IgnoreCase = True: regex.Global = True
    regex.Pattern = "[!]?[$]?[A-Z]{1,3}[$]?[1-9][0-9]{0,6}([:][$]?[A-Z]{1,3}[$]?[1-9][0-9]{0,6})?" ' адрес диапазона ячеек (после имени листа)
  
    If IsObject(Cell) Then
        Set rg = Cell
    Else
        Set rg = Range(Cell)
    End If
    If Not rg.HasFormula Or rg.Cells.Count > 1 Then Exit Sub
    formula = rg.formula

    bChange = True
    Do While bChange
        bChange = False
        Set matches = regex.Execute(formula)   ' Execute search.
        If matches Is Nothing Then
            Exit Sub
        End If
        
        For Each match In matches
            sFrom = match.Value
            i = 1 + match.FirstIndex  ' номер первого символа найденного текста
            j = i + Len(sFrom) - 1    ' номер последнего символа найденного текста
     
            If Left(sFrom, 1) = "!" Then ' необходимо слева найти имя листа
                If Mid(formula, i - 1, 1) = "'" Then ' имя листа заключено в апострофы
                    i = InStrRev(formula, "'", i - 2)
                    If i = 0 Then
                        sFrom = ""
                    End If
                Else  ' в имени листа только буквы, цифры, знак подчеркивания
                    While i > 2 And (UCase(Mid(formula, i - 1, 1)) <> LCase(Mid(formula, i - 1, 1)) Or Mid(formula, i - 1, 1) Like "[0-9_]")
                        i = i - 1
                    Wend
                End If
                sFrom = Mid(formula, i, j - i + 1)
            End If
     
            ' sFrom  - адрес ячейки
            ' слева от найденного адреса не должно быть буквы, цифры, знака подчеркивания
            If sFrom <> "" Then
                If UCase(Mid(formula, i - 1, 1)) <> LCase(Mid(formula, i - 1, 1)) Or Mid(formula, i - 1, 1) Like "[0-9_]" Then sFrom = ""
            End If
    
            ' слева от найденного текста должно быть четное число двойных кавычек
            If sFrom <> "" Then
                If UBound(Split(Left(formula, i - 1), """")) Mod 2 <> 0 Then sFrom = ""
            End If
     
            If sFrom <> "" Then
                On Error Resume Next
                sTo = Range(sFrom).Name.Name
                If Err.Number = 0 Then
                    rg.formula = Left(formula, i - 1) & sTo & Mid(formula, j + 1)
                    bChange = (Err.Number = 0)
                    On Error GoTo 0
                    If bChange Then
                        formula = rg.formula
                        Exit For
                    End If
                End If
                On Error GoTo 0
            End If
        Next match
    Loop
End Sub

' Меняет в ячейках диапазон ссылки на адреса ячеек на имена диапазонов
Sub RangeChgFormula(ByVal r)
    Dim rg As Range, c As Range
    If IsObject(r) Then
        Set rg = r
    Else
        Set rg = Range(r)
    End If
    Application.ScreenUpdating = False
    For Each c In rg.SpecialCells(xlCellTypeFormulas).Cells
        CellChgFormula c
    Next c
    Application.ScreenUpdating = True
End Sub

Sub TestSel()
  RangeChgFormula Selection
End Sub

Владимир
Макросс VBA, для генерации инструций, Мне нужно написать макрос VBA, который позволит упростить написание инструкций для программистов.
 
После того, как закончите именовать ячейки, выложите файл - попробуем сочинить макрос для замены в формулах ссылок на адреса ячеек на имена ячеек.
Владимир
Как отсортировать 5 миллионов строк?
 
Цитата
Андрей VG написал:
ADODB.Stream задействовать - вот где тормоза, так тормоза.
Добрый день, коллеги! Андрей, сам по себе ADODB.Stream довольно шустрый, за исключением использования ReadText для экстремальных объемов. Файл из данной темы в 290 МБ он читает за 0,5 сек. Тормоза при использовании ReadText, как всегда, связаны с алгоритмами выделения памяти и отражены в документации. При использовании рекомендуемого разработчиком буфера в 128 К у меня метод ReadText отработывает за 1,4 сек без накопления (конкатенации) результирующей строки в Excel. Для накопления результата нужны трюки типа предварительного выделения памяти для результата и использования оператора Mid для изменения подстрок результата, тогда время - 2,9 сек. Без этих трюков время не приемлемo - порядка 400 сек.
Изменено: sokol92 - 28 Июн 2020 20:43:09
Владимир
Макросс VBA, для генерации инструций, Мне нужно написать макрос VBA, который позволит упростить написание инструкций для программистов.
 
Действуйте поэтапно.
1. Присвойте подходящие имена ячейкам. Разработчик даже предусмотрел для этого специальный механизм (которым нечасто пользуются). На примере #9:

  • На листе Калькулятор выделите ячейки K4:L5
  • Далее в главном меню Формулы/Создать из выделенного, птичка "в столбце слева" и OK. Теперь ячейки L4 и L5 должны быть правильно поименованы.
Повторите указанный прием для всех необходимых ячеек.
Изменено: sokol92 - 27 Июн 2020 19:58:28
Владимир
Изменение с помощью цикла значения переменной VBA
 
Цитата
Graber777 написал:
данный код не переводил значение в число.
Дополнение. Метод Range.Replace не обращает внимание на локализацию. Для него разделитель дробной доли - точка. Если после замены символов текст (свойство ячейки Formula) будет "похож" на число, то метод Replace преобразует значение ячейки в число. Можно просто поменять точку на точку (поскольку точка есть во всех интересующих нас ячейках):

Код
Selection.Replace ".", ".", xlPart

Не нужно путать применение метода Range.Replace и интерактивные действия в диалоге "Найти и заменить". В диалоге локализация учитывается.
Владимир
Поиск станции метро по адресу
 
Цитата
Toto_costa написал:
что бы было в экселе
Разумеется.
Владимир
Поиск станции метро по адресу
 
Для таких объемов проще воспользоваться сервисом типа этого (он выдает, в том числе, ближайшие станции метро).
Владимир
Почему макрос не копирует данные и не вставляет их из одной книги в другую?, Vba
 
Добрый день! Устройте "субботник" и наведите порядок в своем коде VBA: добавьте Option Explicit и определите все используемые переменные. По возможности, сделайте отступы в коде. Не используйте русских букв для названий переменных и макросов - на других компьютерах это может вызвать проблемы.
Что касается конкретики: Вы копируете диапазон с помощью метода Copy и на следующей же строке отменяете режим копирования. После этого вставлять уже нечего...

 
Изменено: sokol92 - 25 Июн 2020 16:48:21
Владимир
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 91 След.
Наверх