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

Страницы: 1
Где найти инфо по регулярным выражениям?
 
Ребят, подскажите пожалуйста ресурс где понятным языком (и желательно с примерами) написано про применение регулярных выражений.
Уже неделю "курю" их и никак не получается. То кавычки оставляет, то из нескольких слов через пробел или запятую выбирает только первое...
Почему при добавлении в словарь ячейки, последующая проверка на ее наличие возвращает ЛОЖЬ?
 
Ребят, помогите советом...
Со словарями работаю уже давно и впервые столкнулся с такой проблемой. Метод Exists возвращает FALSE постоянно.
Специально проверял ключи - в наличии.
Запрашиваю b.keys(0) - получаю ключ (допустим А1), тут же его проверяю b.exists("A1") = false
Что за бред, не пойму никак, всю голову уже слома, который час уже только сегодня сижу  :cry:
Ошибок вроде нет
Это таблица ключей (item = строка)
dbhdbh
dskkdm
sdfls;kdfkl2
xskndkfkdmk
sdmkvfdmk
вот код макроса
Код
Sub TEST()
    Dim b As Object
    Dim x&
        Set b = CreateObject("Scripting.Dictionary")
        For x = 1 To 10: b.Add Cells(x, 1), x: Next
        For x = 1 To 10: Debug.Print b.Exists(Cells(x, 1)): Next
End Sub
Почему именно словарь? Потому что только словарь обладает функцией проверки на наличие ключа, а мне именно это и нужно
Таблица представлена для примера
Файл прикладываю если надо
Передача нескольких переменных из VBA в PowerShell
 
Столкнулся с проблемой скачивания файлов.
Поиском сайт просмотрел, аналогичных тем не нашел, так что модеров прошу не корить сильно, если вдруг оффтоп.
Решил не особо мучиться и сделать скачивание через PowerShell. Тем более что я уже однажды писал скрипт в который передавал аргументы из другой программы.
В VBA такой "финт ушами" не сработал!
Нарыл скрипт скачивания файла по ссылке, ибо в PS я не сильно шарю, мягко говоря. Указал откуда скачивать, куда класть, выполнил скрипт и всё скачалось и положилось куда надо. Дело, казалось, осталось за малым: передать из VBA две переменных (ссылка и путь сохранения) и дело в шляпе. Однако же я не смог передать не то что обе, но и ни одной вовсе.
Ребят, уже 4 с лишним часа сижу. Гуглом пользоваться умею, так что просьба не отправлять в гугл. Про передачу переменных я что мог найти - там прочитал. Но у меня не получается такое сделать...
Подскажите пожалуйста, кто в теме PS, как передать 2 параметра в скрипт PowerShell из макроса VBA.

Код VBA:
Код
Sub TestPowershell()
    Dim cmd, a1, a2
        a1 = "string1"
        a2 = "string2"
        cmd = "powershell.exe -ExecutionPolicy Unrestricted -NoExit -File d:\TestScript\sc.ps1 -Name """ & a1 & ""
        Shell cmd, vbNormalFocus
End Sub


Код PowerShell:
Код
-ExecutionPolicy ByPass -command

Get-Service -Name $args[0] $args[1]

$download_url = $args[0]
$local_path = $args[1]
$WebClient = New-Object System.Net.WebClient
$WebClient.DownloadFile($download_url, $local_path)

P.S. Пробовал так же "Get-Service -Name $args[0] $args[1]" заменить на "param($mURL, $mPath)". Тоже не получилось...
Открытие копии открытой UserForm
 
кто знает, можно ли как то вызвать новую копию уже открытой формы?
реализация по типу как в 1С со справочниками, когда нажимаешь и "проваливаешься" в подчиненный элемент справочника итд...
если есть аткая возможность, поделитесь куда копать? я просто даже не знаю какой поисковой запрос в гугле писать
Запросы к серверу, обработка js ответа
 
Всем привет.
Так как нужны парсеры, собственно начал изучать эту тему.
Ну с простыми запросами проблем нет, делаешь запрос - разбираешь ответ.
Но сейчас многие сайты (если не большинство) работают с js. Мой старый разработчик писал мне парсеры к сайтам, ответ которых парсился как раз через JsonConverter. Но даже разобрав его парсеры я не смог понять как именно посылать запрос к серверу чтобы он вернул текст для разбора.
Подскажите, пожалуйста, кто разбирается в теме куда копать, что почитать? Может строчку где искать в Source соде страницы нужную?
В идеале хотелось бы не циклом запросы делать а парсить страницу https://5ka.ru/special_offers/
Для тестов создал файл, который парсит продукты магазина. Сразу скажу что сделал я его очень костыльно ибо запросы находятся в цикле котрый идет по номерам товаров каталога, так что там особо заморачиваться с разбором ответа не стал, написал так чтобы было нормально.
Буду благодарен любому совету.
Прикладываю файл и текущий код.
Код
Option Explicit
Const NF As String = "NOT FOUND"
Sub StartPars()
    Const StURL As String = "https://5ka.ru/special_offers/"
    Dim ReqRes$, tmpName$
    Dim MyRequest
    Dim x&, lr&
    Dim r As Range
        If Not IsEmpty([A2]) Then Range("A2").Resize(Cells(Rows.Count, 1).End(xlUp).Row, 3).ClearContents
        Set MyRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
            For x = 616 To 617 '17000
                MyRequest.Open "GET", StURL & x & "/"
                MyRequest.send
                ReqRes = MyRequest.responsetext
                lr = Cells(Rows.Count, 1).End(xlUp).Row + 1
                tmpName = ClearResp(GetParsInfo(ReqRes, "<a href=""/special_offers/" & x & "/"">", "</a>"))
                    If Not tmpName = NF Then
                        Set r = Cells(lr, 1).Offset()
                        r(, 1) = tmpName
                        r(, 2) = GetParsInfo(ReqRes, "<span data-price=""", """ class=""cost")
                        r(, 3) = ClearResp(GetParsInfo(ReqRes, "<span class=""cost__brake"">", "</sup></span>"), "<sup>", True)
                        r(, 4) = x
                        If IsNumeric(r(, 2)) And IsNumeric(r(, 3)) Then r(, 5) = r(, 2) / r(, 3)
                    End If
                ReqRes = ""
            Next
End Sub
Function GetParsInfo(ParseResponse As String, StartStr As String, EndStr As String) As String
    Dim st&, et&
        On Error GoTo errH
        st = Application.WorksheetFunction.Search(StartStr, ParseResponse) + Len(StartStr)
        et = Application.WorksheetFunction.Search(EndStr, Mid(ParseResponse, st, Len(ParseResponse) - st))
        GetParsInfo = Mid(ParseResponse, st, et - 1)
        Exit Function
errH:
        GetParsInfo = NF
End Function
Function ClearResp(ResponseStr As String, Optional delim As String = """, Optional ReplD As Boolean = False) As String
    Dim NewStr$, tmpRepl$
    Dim x&
    Dim tmpStr As Variant
        On Error GoTo errH
        If ReplD Then tmpRepl = "." Else tmpRepl = ""
        For Each tmpStr In Split(ResponseStr, delim)
            x = x + 1
            If x > 1 Then NewStr = NewStr & tmpRepl & tmpStr Else NewStr = NewStr & tmpStr
        Next
        ClearResp = NewStr
        Exit Function
errH:
        ClearResp = ResponseStr
End Function
Изменено: andrey062006 - 29 Ноя 2017 17:12:35
Требуется обновление или написание нового парсера, Сдох парсер. Требуется обновить чтобы снова работал.
 
Вкратце:
Парсер парсит данные с сайта investing.com.
Видимо ребята в очередной раз что-то обновили на сайте и парсер опять накрылся.
ПАРСИНГ ПРОИЗВОДИТСЯ БЕЗ ЗАДЕЙСТВОВАНИЯ БРАУЗЕРА.
Таким образом предложение актуально только для тех кто умеет писать такие парсеры без задействования браузера!
Хотелось бы найти одного человека на постоянную поддержку (парсер время от времени "падает" и необходимо исправлять (последняя версия держалась крайне долго)).

Если изменить парсер не представлется возможным и/или у Вас есть идеи по улучшенной реализации его, то изначальная тема находится здесь
Изменено: andrey062006 - 17 Янв 2017 16:11:57
Новый быстрый ввод даты и времени без разделителей
 
Всем добрый день!
Долгое время не требовалось быстрый ввод даты/времени делать, но вот опять понадобилось.
Как и раньше (года 3 назад) хотел взять макрос Николая Павлова, но все таки решил написать свой. Вдруг кому-то пригодится.
Буду рад комментариям и конструктивной критике)
DR - диапазон даты
TR - диапазон времени
Код
Private Sub Worksheet_Change(ByVal c As Range)
    Dim DR As Range, TR As Range
    Dim S As String, k As String
    Dim m&
        If c.Row = 1 Then GoTo EM
        Set DR = Columns(3)
        Set TR = Columns(4)
        S = Left(Year(Date), 2)
            If c.Column = 3 Then k = "Date format is not dmmyyyy" Else: If c.Column = 4 Then k = "Time format is not hmm" Else GoTo EM
            If IsNumeric(c) Then
                If Len(c) = 6 Or Len(c) = 5 Then If Len(c) = 6 Then m = 3 Else m = 2
                If Len(c) = 4 Or Len(c) = 3 Then If Len(c) = 4 Then m = 2 Else m = 1
                If Not Intersect(c, DR) Is Nothing And Len(c) = 6 Or Len(c) = 5 Then c = DateSerial(CDbl(S & Right(c, 2)), CDbl(Mid(c, m, 2)), CDbl(Left(c, m - 1))): GoTo EM
                If Not Intersect(c, TR) Is Nothing And Len(c) = 4 Or Len(c) = 3 Then c = Format(TimeSerial(CDbl(Left(c, m)), CDbl(Right(c, 2)), 0), "h:mm")
            Else
                If IsDate(c) Then GoTo EM
                MsgBox k, vbExclamation + vbOKOnly, "ERROR"
            End If
EM:
        Set c = Nothing
End Sub
Изменено: andrey062006 - 28 Ноя 2016 15:37:30
Как перебрать всевозможные комбинации столбцов?
 
Есть книга. В ней 20-30 строк и 600-700 столбцов
Задача состоит в следующем: Нужно перебрать всевозможные комбинации столбцов
Например
столбцы 1, 1+2, 2, 1+3, 3, 1+4..., 1+2+3, 2+3, ,1+2+4,,1+2+5...,1+2+3+4,,1+3+4,3+4 итд
начал писать цикл, но понял что одним циклом тут не ограничится.
может быть есть какой то более простой способ перебора всех комбинаций?
Нужен парсер сайта, парсер
 
Необходимо написать парсер, который с сайта http://ru.investing.com/economic-calendar/ сможет спарсить календарь на нужную мне дату/диапазон дат со всеми необходимыми параметрами:

- Дата или диапазон дат (с учетом нужного часового пояса (часовой пояс не принципиален, но желателен))
- Время (с учетом нужного часового пояса)***
- Страна (в календаре отображается только флаг страны, но если поднести мышь к флагу то отображается название, вот это название и нужно)
- Валюта
- Важность (там где быки нарисованы (можно в виде цифры от 1 до 3))
- Событие (без месяца или прочего в хвосте (например, если написано "Индекс опережающих экономических индикаторов (м/м) (июль)", то нужно сделать чтобы она вставила "Индекс опережающих экономических индикаторов (м/м)"))
- Факт.
- Прогноз
- Предыдущее
- Описание события (для этого в календаре нужно нажать по событию и во вновь открывшейся странице будет его описание, там же будет история данных события) и иметь возможность отключения парсинга описания события.

-  Историю (в формате: СТРАНА_Событие, например: "Япония Индекс опережающих экономических индикаторов (м/м)") в отдельный файл (формата xls или csv (на худой конец txt, но xls предпочтительней) (но это не критично), при чем если программа натыкается на такой же файл в папке, то ей уже не нужно парсить данные. Для этой настройки так же нужно предусмотреть возможность отключения. История находится на той же странице где и описание события.

***ОБЯЗАТЕЛЬНО чтобы программа парсила именно ТОЛЬКО ВРЕМЯ, потому что на сайте предусмотрено 2 варианта отображения времени:
  1. Время до выхода события
  2. Только время
Так же необходимо иметь возможность выбрать страны и/или хотя бы иметь возможность указать что нужно по всем странам отфильтровать, потому что по умолчанию в фильтр подбирается только несколько стран. Так же в фильтре нужно выбрать все категории и все важности.
Фильтр стран в EXCEL лучше всего реализовать посредством userform (с флажками) с привязкой к листу настройки, где будут сохраняться отборы.

Программу нужно сделать так, чтобы она могла работать и с русской и с английской версией сайта (http://investing.com/economic-calendar/).

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

Соответственно Факт, Прогноз и Предыдущее показание должны быть представлены в виде чисел, а не текста, а дата и время в соответствующих форматах.

По оплате ориентироваться на 10 тысяч. В остальном все обговариваемо и если Вы сможете сделать такой парсер, по оплате мы договоримся!

Пожалуйста, не пишите что сделаете или готовы взяться, пока не посмотрите сайт. Парсер сделать довольно не просто.

ПРОГРАММА НЕ ДОЛЖНА ЗАДЕЙСТВОВАТЬ БРАУЗЕР, КОД ПРОГРАММЫ ДОЛЖЕН БЫТЬ ОТКРЫТ!!!
Как сделать чтобы при Web-запросе сохранялось моё форматирование?
 
Есть макрос. Веб запрос создавал макрорекордером.
Код
Sub ЗАПРОС()
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www............org/", Destination:=Range("$A$1"))
        .Name = "запрос"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = False
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingRTF
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = False
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
Columns("A:A").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub

К листу, в который загружаются данные, применен текстовый формат. Суть в том что макрос считывает и текст и цифры, но после вэб запроса (или во время его) он применяет к листу свои форматы и в итоге числа, которые он загружет, загружет он уже не правильно, например некоторые числа преобразовываются в даты. и вместо, к примеру, 4,8, получаем 4 августа. Соответственно последующая обработка таких чисел невозможна. Если в файле 10 таких числе - это не страшно, но когда их 20000, каждое редактировать свихнешься... Подскажите пожалуйста какую строчку добавить чтобы при вэб запросе сохранялся изначальный мой текстовый формат а не менялся на общий или даты итд!

Гуглить уже гуглил, но не очень я еще понимаю эти вэб запросы и их описание.
Вызов функции, находящейся в UserForm
 
Подскажите, пожалуйста, как вызвать функцию.
Есть UserForm1, в ней есть Private Sub macros1.
Ни на каких контролах он не завязан.
Не могу понять как вызвать эту функцию (находящуюся в UserForm) не из UserForm а из любого модуля? Облазал уйму сайтов, нигде ничего по существу не нашел.
UserForm1.macros1 и Call UserForm1.macros1 не помогают.

Дело в том что некоторые макросы приходится дублировать... В этом случае, если что то нужно изменить в коде, то приходится менять везде. ЧЕстное слово, замучался уже. Может кто подскажет как это сделать?

Если вдруг такая тема есть на форуме прошу модераторов не злиться)  Поиском по форуму пользовался, но ничего не нашел...
Динамическое изменение части ListBox со сравнением
 
Есть 2 зависимых листбокса. В первом установлен отбор значений с выделением MultiSelect. На основе этих значений формируется второй листбокс. Так вот. Формируется он нормально НО, хотелось бы немножно другое в нем видеть.

Во-первых 2 столбец (listbox1) должен оставаться не изменным пока не получит прямую команду обновиться (это например по клику кнопки можно сделать), а вот второй столбец этого же листбокса должен изменяться, то есть допустим изменилось значение в листе 2 (MainMass), значит листбокс должен обновиться но первые 2 столба должны остаться неизменными, а третий должен отразить как раз изменнение. Пробовал на основе листбокса создать массив, но что то не получилось, excel ругается, пробовал так же создать массив из листа 1 Range("A:Q";) (чтобы во второй столбец брать значения из "статичного" массива, а в третий из обновленного) но excel так же не позволил этого сделать, может потому что слишком много значений?

Во-вторых при открытии userform у меня сразу выделяются выбранные значений в listbox 2. Я хотел примерно то же сделать и для listbox1 но только чтобы выделялось после сравнения, допустим она сравнила значение листбокса скрока 2 столбец 2 и 3 и в 3 столбце значение не равно значению в столбце 2, тогда надо выделить, но она и это не хочет сделать, хотя не понимаю почему. Если можно логически описать выделение в листбоксе2 при открытии формы почему нельзя такое же логическое сравнение сделать и для этого листбокса?
Изменено: andrey062006 - 21 Апр 2015 13:55:54
Макрос поиска и формирования списка ListBox
 
Всем доброй ночи.
Написал макрос формирования листбокса с поиском и перебором значений, но появляется ошибка.
Уже который час не могу понять почему не работает. В отладчике все переменные имеют значения, без ошибок, но во втором цикле программа не хочет завершаться по Exit For и выдает ошибку "Run-time error '13': Type mismatch".
Суть работы макроса заключается в следующем: есть большой список (более 60000 строк), значений очень много повторяющихся, но они идут последовательно (по датам от меньших к большим). Макрос должен найти значение на листе из сформированного массива и поставить его в листбоксе рядом. НО. Значение нужно найти с конца списка, которое удовлятворяло бы условиям IF... Может кто то знает как проще это можно реализовать или подскажет в чем тут дело в макросе?
Вот код макроса:
Код
Dim MainMass()
Private Sub List01()
Dim lLastRow
Dim tmpFnd
MainMass = Sheets("Лист2").Range("A3:O56").Value
'ListBox1.ColumnCount = 5
'ListBox1.ColumnWidths = "40;10;1"
lLastRow = Sheets("Лист1").Cells(Rows.Count, 1).End(xlUp).row

z = 1
    For z = 1 To UBound(MainMass) - LBound(MainMass)
        If MainMass(z, 1) = 1 Then
            ListBox1.AddItem MainMass(z, 2)
            
                xc = 54
                Set isFound = Sheets("Лист1").Range("C:C").Find(MainMass(z, 2), After:=Cells(lLastRow - xc, 3), LookIn:=xlValues, lookat:=xlWhole)
                tmpFnd = isFound.row
                
                    For fnd = 1 To 100
                        If Sheets("Лист1").Cells(tmpFnd, 10) = "=" Then GoTo ness
                            If Sheets("Лист1").Cells(tmpFnd, 7) = "У" Or "В" Then Exit For
ness:
                    tmpFnd = tmpFnd - xc
                    Next fnd
            ListBox1.List(ListBox1.ListCount - 1, 3) = Sheets("Лист1").Cells(tmpFnd, 10)
            ListBox1.List(ListBox1.ListCount - 1, 4) = MainMass(z, 14)
        End If
    Next z

End Sub
Изменено: andrey062006 - 21 Апр 2015 01:27:53
Поиск глобальной переменной по ее названию
 
Суть в следующем.
При открытии книги объявляется 50 глобальных переменных (начальные значения), которые соответствуют названиям соседних столбцов и присваивается значение каждой из них.
Допустим при изменении значения мне нужно найти эту переменную и сравнить с новым значением.
То есть Range("A2").Value (к примеру) вернет значение "Переменная1". Дальше нужно найти эту объявленную переменную (то есть переменную с таким же названием, которое вернуло Range().Value) и найти ее значение, а потом сравнить их.
Можно это как то сделать или нет?)
Файл для примера прикладываю.
Изменено: andrey062006 - 2 Апр 2015 22:17:06
Макрос не обрабатывает свернутые/скрытые столбцы
 
Друзья, может поможет кто советом как понять почему не работает макрос в свернутых (сгруппированых) или скрытых столбцах? Может это EXCEL не может или я где то напорол?
Суть вот в чем:
есть список и таблица с ним. В списке макрос находит значение, а дальше оффестит в таблицу и по свернутым столбцам тем же оффсетом собирает инфу
в развернутом виде ве работает, как только сверну или скрою столбцы все, выдает ошибку и не хочет ничего делать
не понимаю почему, ведь данные по сути никуда не деваются, и номера столбцов от этого не меняются, но этих столбцов у меня 13 штук спереди и мешаются (глаза мозолят)

вот код
Код
Set isFound = Sheets("Лист1").Range("B:B").Find(SerList, , LookIn:=xlValues, LookAt:=xlWhole)
isFound.Offset(, 15).Select

На выборе первого же оффсета он затыкается
Переменная объявлена, не знаю в чем тут дело может быть
Выполнить только часть макроса при выполнении условия, если запускается самостоятельно - выполнить весь код, если вторым макросом - часть кода
 
Задача вот в чем. Имеется macro1 и macro2.
Каждый из них имеет свой код.
macro2 может запускаться как самостоятельно так и из макроса macro1.
Попытался объявить переменную в macro1 чтобы в macro2 проверять ее и при несовпадении чтобы он пропускал часть кода, но не получилось.
Так вот смысл в том чтобы если макрос 2 запускается самостоятельно, то чтобы выполнялся весь код, а если из-под макроса1, то чтобы только со второй части кода...
Может кто подскажет как это реализовать и вообще возможно ли такое?)
Код
Sub macro1()
Dim zzz As Boolean
zzz = True
MsgBox "Макрос выполнен, перехожу к другому"
macro2
End sub

Sub macro2()
'первая часть кода
On Error Resume Next
If zzz = False Then
If msgbox ("Выполнить первую часть кода?", vbYesNo) = vbNo Then Exit Sub
End If
'вторая часть кода
Range ("A1:C20").ClearContents
End Sub
Преобразование макроса Если в Цикл и определение исходной ячейки
 
Тема такая, есть таблица (см. вложение), в которой находятся блоки идентичные друг другу через одинаковое друг от друга расстояние.
Написал макрос чтобы он копировал блок, в котором находится активная ячейка, со смещением вниз на 132 строки (не спрашвайте зачем 132, так надо просто).
Групп блоков всего 7 (поэтому и прописано соответствующее кол-во условий If). Суть в том, что макрос высчитывает активную ячейку, прибавляет к ней 132 и, если номер строки будет больше 920, макрос должен остановиться.
Ну так вот, макрос вроде делает все как надо, но я хотел бы добавить в него чтобы он возвращался в исходную ячейку (потому что можно запустить макрос не с 1 блока, а, допустим, с 7-8 итд), с которой начал. Ни как не соображу как это сделать.
Еще я хотел сделать цикл (чтобы макрос не был таким огромным), но не получилось что-то... Может есть у кого какие идеи?
Файл прикладываю.

А вот макрос:
Код
'Этой функцией вычисляю в каком именованом диапазоне находится активная ячейка
Function arnm(cell As Range) As String
Dim x
On Error Resume Next
For Each x In Application.Names
If Intersect(x.RefersToRange, cell) Is Nothing Then
Else
arnm = arnm & x.Name & " "
End If
Next
arnm = Trim(arnm)
End Function

'Здесь вычисляю активную ячейку
Private Sub stat()
Dim s
s = arnm(Cells(ActiveCell.Row, ActiveCell.Column))
Range(s).Select
End Sub

'Эта функция при нажатии на кнопку запускает макрос заполнения
Private Sub cmbutton_Click()
stat
Selection.Copy
acr = ActiveCell.Row + 132

'Здесь описываю что делать при ошибке
On Error GoTo Err_Handler

'А тут начинается перечисление условий
If acr < 920 Then
ActiveCell.Offset(132, 0).Select
stat
ActiveSheet.Paste
acr = ActiveCell.Row + 132

If acr < 920 Then
ActiveCell.Offset(132, 0).Select
stat
ActiveSheet.Paste
acr = ActiveCell.Row + 132

If acr < 920 Then
ActiveCell.Offset(132, 0).Select
stat
ActiveSheet.Paste
acr = ActiveCell.Row + 132

If acr < 920 Then
ActiveCell.Offset(132, 0).Select
stat
ActiveSheet.Paste
acr = ActiveCell.Row + 132

If acr < 920 Then
ActiveCell.Offset(132, 0).Select
stat
ActiveSheet.Paste
acr = ActiveCell.Row + 132

If acr < 920 Then
ActiveCell.Offset(132, 0).Select
stat
ActiveSheet.Paste
Application.CutCopyMode = False
Else
Application.CutCopyMode = False
Cells(ActiveCell.Row, ActiveCell.Column).Select
Exit Sub
End If
End If
End If
End If
End If
End If


Err_Handler:
Application.CutCopyMode = False
Cells(ActiveCell.Row, ActiveCell.Column).Select
Exit Sub

Cells(ActiveCell.Row, ActiveCell.Column).Select
End Sub
Список из заданного массива в одной ячейке, Формулой объеденить значения одного массива с заданным разделителем
 
Есть столбец из 10 ячеек.
Необходимо формулой (желательно формулой) из каждой ячейки этого диапазона взять значение, разделить каждое запятой или точкой с запятой и вставить в одну ячейку.
Пример прилагаю.
Кроме формулы СМЕЩ в голову ничего не приходит, но не могу придумать как её использовать.
Формирование листа с заказами, Нужно усовершенствовать формулу (сократить её) или написать макрос
 
Появилась новая проблемма.
Не могу справиться с новой формулой. Уже не знаю как её сократить.
Имеется таблица заказов. На листе1 вносим заказы, на листе2 формируется итоговый список заказов.
Суть в следующем: надо чтобы при вводе на листе 2 в ячейку например А2 названия заказа, чтоб в ячейке В2 формировался список всех товаров из заказа а так же проверка на заполненность дополнительных полей и, если доп поля заполнены, то чтоб вносились и они.
То есть для Заказа 1 в ячейку Лист2!В2 вносится "Доп. Поле 1 - 24", дальше идет проверка если Лист1!С21 заполнено, то вносится данные из ячеек листа1 В21 С21 D21 в таком вот формате "поле доп 2 - 1 шт", а если не заполнено то ничего не вносится, дальше снова проверка если Лист1!С21 заполнено, так же по аналогии с доп полем 2.
А дальше вносятся все строки из заказа с предвартельной заполненностью строки. Ну то есть если на листе1 в ячейке В3 есть данные то тогда сцепляем ячейки В3 С3 D3. им так для каждой из 16 строк.
Я написал формулу, но очень уж массивную, текст формулы приведен в файле на листе2.
Может кто то подскажет как её сократить до минимума или может макросом как то это делать?

Скрытый текст
Как найти последнюю не пустую ячейку?
 
Ребята, кто может помочь? Нужно сократить формулу:
Код
=ЕСЛИ(ЕПУСТО(N3);ЕСЛИ(ЕПУСТО(M3);ЕСЛИ(ЕПУСТО(L3);ЕСЛИ(ЕПУСТО(K3);ЕСЛИ(ЕПУСТО(J3);ЕСЛИ(ЕПУСТО(I3);ЕСЛИ(ЕПУСТО(H3);ЕСЛИ(ЕПУСТО(G3);ЕСЛИ(ЕПУСТО(F3);ЕСЛИ(ЕПУСТО(E3);ЕСЛИ(ЕПУСТО(D3);ЕСЛИ(ЕПУСТО(C3);"";B3-C3);B3-D3);B3-E3);B3-F3);B3-G3);B3-H3);B3-I3);B3-J3);B3-K3);B3-L3);B3-M3);B3-N3)
Никак не могу придумать как сократить, а сократить нужно потому что таких формул будет много.

Суть в следующем. В прилагаемом примере, в ячейке, которая закрашена желтым цветом, должно считаться так: берется ячейка закрашенная серым цветом и из нее вычитается последняя ячейка (справа налево от желтой), которая больше нуля. То есть, например, если в ячейках H7, I7 есть значения больше нуля, то мы вычитаем из ячейки B7 ячейку I7.
Уверен что это можно сделать как то проще, но не могу понять как(
Создание карточки товара, Консолидированное отображение данных из разных столбцов в выбранной строке в одной форме
 
Как сделать чтоб форма брала значение в выделенной ячейке  и разносила параметры по фреймам (см. вложеный файл)?

Суть состоит в следующем. В книге более 40 столбцов разной длины. Каждый раз пролистывать всё это чтоб просмотреть обобщенную информацию, надоело. Нужно чтоб, встав на ячейку с наименованием, в форму в разные фреймы попали данные например в первый фрейм "параметр 1", во второй фрейм "параметр 2" а в тратий фрейм вошли "параметры 3,4,5", например через запятую. Грубо говоря чтоб получилась карточка товара.

Может не через фреймы а ещё как-то? Я не сильно разбираюсь в макросах, поэтому прошу помощи!
поиск по combobox и вставка значения из другого combobox
 
Поискал на форуме, вроде не нашел ничего!
Есть файл, в одном столбце города, во втором дни, когда туда нужно заказывать билеты.
Есть форма, в ней 2 combobox в одном из которых нужно выбрать город, а во втором день, день должен проставиться напротив города, выбранного в первом combobox.

Пробовал, ничего не получилось(
Может кто-то сможет подсказать как это можно сделать?
Файл прикладываю
Загрузка разных заказов в книгу с разнесением имен клиентов
 
Есть сетевой клиент, который делает по 80-120 заказов в день (по 1 заказу на 1 магазин). Каждый раз вводить это руками ужасно. Структура таблицы заказов одинаковая всегда и не меняется (файл заказ1.xlsx). Названия файлов заказов всегда разные. Наименование номенклатуры заказчика отличается от нашей.
Облазил весь форум не смог найти подходящей темы или хотя бы примерно схожей!

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

Хотелось бы что бы можно было сложить заказы в папку и потом макросом указать путь к папке и выбрав файлы из которых надо загрузить данные, макрос разнес данные по колонкам заказов. Или любой другой способ! В макросах не силен, а формулами такое не сделать(((

Может кто-то уже сталкивался с подобным, помогите пожалуйста если знаете как решить проблему!
не работает макрос заполнения значений
 
Есть лист заказов, в нем слева стоят значения наличия на складе товара, если Да, то товар есть, если нет....
Есть макрос который не могу никак дописать.
Значений товаров может быть много разных, но каждый раз переписывать макросы хлопотно. Назначил имена диапазонов и попытался их встроить в макрос чтобы макрос видел откуда начинать очищать и заполнять и до куда, но почему то в макрос они не цепляются((( Точно что то не так делаю(
Подскажите плиз что не так и как надо
Макрос выборочной очистки и формула суммирования
 
Есть табличка заказов. Количество строк может быть разным!

Как сделать чтоб в итогах считалось не общее количество, по столбцу, а умноженное количество в заказе на значение в строке "в упаковке" и так суммировалось построчно, то есть что-то типа =сумм(F3*B3;F4*B4;...) и т.д. Количество строк может меняться но каждый раз переписывать формулу очень хлопотно. Может может кто подсказать как это сделать проще формулой или макросом (лучше формулой)?

Примерно тоже самое с макросом очистки значений! Может как то можно сделать чтоб он удалял всё в заданном диапазоне, кроме формул, или ещё как то, а то опять же каждый раз макрос переписывать это ужасно!

Файл прикрепляю!
вычисление времени на основе не временных данных и преобразование во временной формат
 
есть такая проблема
по ТК время работы сотрудника 41 час, сотрудник работает 5-и дневную рабочую неделю
пытаюсь рассчитать суточное время работы сотрудника чтобы учесть переработку и дополнительную работу
получилось сделать формулу которая вычисляет время но не могу сделать чтобы это получалось в формате времени (строка 3), поэтому приходится вводить ещё одну строку руками (строка 4) чтоб на основании неё шел расчет
как сделать чтоб в строке 3 получалось преобразование во временной формат я не могу разобраться
может кто-то помочь сможет?
Помогите с макросом сохранения
 
Есть книга, в ней определенный диапазон мне нужно сохранять постоянно, один и тот же. Но в нем меняются данные. Сохраняю в PDF макросом:  
 
Sub Save_PDF()  
'  
   Range("A51:D90").Select  
   With Selection  
       .WrapText = False  
       .Orientation = 0  
       .AddIndent = False  
       .IndentLevel = 0  
       .ShrinkToFit = False  
       .ReadingOrder = xlContext  
   End With  
   With Selection  
       .WrapText = True  
       .Orientation = 0  
       .AddIndent = False  
       .IndentLevel = 0  
       .ShrinkToFit = False  
       .ReadingOrder = xlContext  
   End With  
   Range("A2:D90").Select  
   Path = ActiveWorkbook.Path  
   Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _  
   Range("C1") _  
       , Quality:=xlQualityStandard, _  
       IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _  
       True  
   Range("A1").Select  
End Sub  
 
Мне нужно чтоб он сохранял документ в том каталоге, где находится сама книга (excel 2010). Но он упорно сохраняет только в папку "Мои документы". Пожалуйста помогите, подскажите как сделать чтоб он сохранял в тот каталог, где сам находится (D:\Расчеты по обязательствам\клиенты).  
P.S. Прописать путь к каталогу - не выход! Так как файл перемещается по другим каталогам, то и пути меняются!
Как сделать динамическую выборку по значениям, соответствующим критериям?
 
Суть вот в чем:  
на листе есть блоки подарков, у каждого подарка есть 4 варианта наполнения предметами.  
Так же есть критерий по которому нужно отобрать все подарки, которые соответствуют критериям, то есть на примере Подарок 1 (см. вложенный файл).  
В диапазоне K1:N1 задан критерий по которому мне нужно отобрать все комплекты подарков, которые не превышают по 1 варианту 100, по второму варианту 300, по 3 варианту 90 и по 4 варианту 100. Пробовал формулы индекс, поискпоз, впр, гпр, адрес и т.д., ничего не выходит.  
А, да, забылнаписать, что после того как формула найдет эти значения, в блок, выделенный зеленым цветом должны попадать названия подарков, то есть "Подарок 1", "Подарок 2" и т.д.  
Сам этот зеленый блок должен быть динамическим, то есть критерии меняются и нужно искать по новой и чтобы он сам перезаполнялся!  
Помогите пожалуйста, ну просто ОЧЕНЬ нужно!
Страницы: 1
Наверх