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

Страницы: 1
Запуск файла Excel при получении определенного письма в Outlook
 
Уважаемые форумчане, добрый день!
Я понимаю, что тут обсуждаются взаимодействия с Excel, но всё же спрошу, так как для решения потребуется знание VBA.

Есть необходимость исполнять удалённо макрос Excel на рабочей машине.
Придумал такой вариант: присылать на почту в Outlook 2013 письмо с определенного ящика и с определенной темой, при получении этого письма в Outlook срабатывает макрос запуска файла Excel, находящегося в определенной папке на жестком диске. А далее уже в этом файле настроить срабатывание макроса при открытии файла.

Макрос Excel, срабатывающий при открытии файла, у меня есть.
Проблема с макросом для Outlook. Можете помочь с ним?
Условное форматирование ячеек
 
Добрый день, форумчане!
Столкнулся с проблемой, которую не могу решить.
Робот формирует отчет в 1С, сохраняет его в файл, далее открывает вчерашний сформированный файл отчета, запускает макрос, который устанавливает на лист условное форматирование по сравнению ячеек сегодняшнего листа со вчерашним, чтобы измененные ячейки закрашивались желтым цветом.

Далее робот начинает обрабатывать информацию в другой программе и тупо копировать оттуда все подряд даты и вставлять их в новый отчет.

Задумка в том, что если дата изменилась, то результат должен быть закрашен желтым с помощью условного форматирования.
А по факту каждая введенная дата роботом в ячейку (даже если она идентична уже существующей дате в ячейке) закрашивается желтым по условному форматированию. Стоит вручную войти в закрашенную ячейку и нажать Enter, закраска пропадает.
Что за мистика?
Кусок выгрузки во вложении.
Может стоит как-то макрос доработать?
Во время обработки и вводе роботом дат на обоих листах формат ячеек - дата. Изначально в выгрузке отчета из 1С формат ячеек - общий, но робот меняет формат этих столбцов на дату.
 
Поиск строки с наименьшим значением по условию
 
Здравствуйте, уважаемые форумчане!
И снова обращаюсь к вам за помощью.
Есть отчет реестра договоров с разными статусами и датами присвоения этих статусов. По каждому номеру договора может быть несколько разных статусов.
Меня интересует определенный статус "Загружен", я по этому статусу фильтрую отчет.
Но проблема в том, что каждый договор может быть несколько раз "Загружен", а мне нужно построить отчет, чтобы в нем были строки с более ранним сроком "Загружен".
Другими словами, мне необходимо знать дату первой загрузки каждого договора, а остальные строки скрыть.
Не могу придумать формулу определения первой строки статуса "Загружен".
Пример во вложении. Зеленым выделены строки, которые мне нужны в отчете.
Многоуровневая сортировка в зависимости от результатов
 
Здравствуйте, уважаемые форумчане!
возникла необходимость постоянно в таблице делать сортировки строк. В данный момент сортировка происходит ручным перетаскиванием строк. Хотелось бы это как то автоматизировать.
При попытке сделать настраиваемую сортировку выходит не то, что хотелось бы.
Сначала сортирую по одному столбцу (статус), а далее надо бы сортировать другие столбцы в зависимости от статуса. То есть по одному столбцу с определенным статусом, по другому столбцу с другим статусом...
Во вложении пример, отсортированный с помощью настраиваемой сортировки, и видно, что в статусе заказано дата доставки совсем не соответствует сортировке.
Сортировка макросом динамического столбца
 
Здравствуйте, друзья!
Есть макрос, который открывает файл, берет из него определенный лист, сохраняет в отдельный документ, сортирует по определенному столбцу и ставит автофильтр.
Вот кусок кода, записанного рекордером

Код
' Сортируем таблицу по столбцу AT от старых к новым
ActiveWorkbook.Worksheets("Лист1").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Лист1").AutoFilter.Sort.SortFields.Add Key _
        :=Range("AT7:AT2000"), SortOn:=xlSortOnValues, Order:=xlAscending, _
        DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Лист1").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    
'Ставим в автофильтре стобца K (11-й слева по счету) отбор по содержанию фразы "ЦФО"
     ActiveSheet.Range("$A$7:$CV$2000").AutoFilter Field:=11, Criteria1:="*" & "ЦФО" & "*", Operator:=xlAnd

Так вот проблема в том, что колонки первоначального листа могут иногда сдвигаться. То есть требуемая для сортировки информация из колонки AT может переместиться в колонку AU. И колонка K может сдвинуться на L. Ну, думаю, смысл понятен.

Когда меняется структура первоначального листа - известно. И мне руками не сложно в макросе поправить адрес диапазона.

Но этот макрос могут запускать разные пользователи, которые понятия не имеют, что такое VBA. И вот для них я планирую сделать ячейки, в которых они будут текстом указывать эти диапазоны, а макрос будет обращаться к этой ячейке, брать оттуда адрес диапазона или колонки и подставлять их в код, например через Cells (*,*)
Это реально? У меня не получается.

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

Если необходимо - во вложении находится файл с макросами и папка с несколькими файлами, с которыми макрос работает.
Код
Option Explicit
 
Dim objFSO As Object, objFolder As Object, objFile As Object
 
Sub Get_All_File_from_SubFolders()
    Dim sFolder As String
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = False Then Exit Sub
        sFolder = .SelectedItems(1)
    End With
    sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator)
    Application.ScreenUpdating = False
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    GetSubFolders sFolder
    Set objFolder = Nothing
    Set objFSO = Nothing
    Application.ScreenUpdating = True
End Sub

Private Sub GetSubFolders(sPath)
    Dim sPathSeparator As String, sObjName As String
    Dim wb As Workbook
    Set objFolder = objFSO.GetFolder(sPath)
    For Each objFile In objFolder.Files
        If Replace(objFile.Name, objFSO.GetBaseName(objFile), "") Like ".xls*" Then
            'открываем книгу
            Set wb = Application.Workbooks.Open(sPath & objFile.Name)
            'действия с файлом: Снимем пароль
            wb.Sheets(1).Unprotect "123"
            'Запишем на первый лист книги в ячейку А1 текущую дату
            wb.Sheets(1).Range("A1").Value = Format(Now, "dd.mm.yyyy")
            'Снимем все возможные автофильтры
            On Error Resume Next: wb.Sheets(1).ShowAllData: On Error GoTo 0
            'Закрасим ячейки цветом
            Range("O5:AB1000").Interior.Color = RGB(255, 255, 204)
            'Ставим пароль по определенному условию
            wb.Sheets(1).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingCells:=True, AllowInsertingRows:=True, AllowFiltering:= _
        True, Password:="123"
            wb.Close True
        End If
    Next
    For Each objFolder In objFolder.SubFolders
        GetSubFolders objFolder.Path & Application.PathSeparator
    Next
End Sub

Private Sub GetSubFolders2(ByVal sPath As String, Optional ByVal lCounter As Long = 0)
    Dim sPathSeparator As String, sObjName As String
    Dim wb As Workbook
'    Dim lCounter As Long: lCounter = 0
    Set objFolder = objFSO.GetFolder(sPath)
    For Each objFile In objFolder.Files
        If Replace(objFile.Name, objFSO.GetBaseName(objFile), "") Like ".xls*" Then
            'открываем книгу
            Set wb = Application.Workbooks.Open(sPath & objFile.Name)
            'действия с файлом
            With ThisWorkbook.Worksheets("НЕ ВХОДИТЬ!!!").Range("A1")
                .Offset(lCounter).Value = wb.Sheets(1).Range("A1").Value
                .Offset(lCounter, 1).Value = objFile.Name
                lCounter = lCounter + 1
            End With
            wb.Close True
        End If
    Next
    For Each objFolder In objFolder.SubFolders
        GetSubFolders2 objFolder.Path & Application.PathSeparator, lCounter
    Next
End Sub 'GetSubFolders2

Sub call_GetSubFolders2()
    Dim sFolder As String
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = False Then Exit Sub
        sFolder = .SelectedItems(1)
    End With
    sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator)
    Application.ScreenUpdating = False
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    
    With ThisWorkbook.Worksheets("НЕ ВХОДИТЬ!!!")
        .Range("A1", .Cells.SpecialCells(xlCellTypeLastCell)).EntireColumn.Resize(, 2).ClearContents
    End With
    
    GetSubFolders2 sFolder
    Set objFolder = Nothing
    Set objFSO = Nothing
    Application.ScreenUpdating = True
End Sub
Задать динамический диапазон строк (между знаками + в столбце)
 
Здравствуйте, уважаемые форумчане!
Есть табличка учёта оплаты по договорам.
В табличке серая строка - это как бы главная строка договора, в которой отображены итоговые суммы. После серой строки идут подстроки, в которых указываются сведения о платежах, которые суммируются в серую строку выше.
Каждый новый договор начинается серой строкой с помощью условного форматирования путём внесения в колонку А знака +.

Получается,каждый новый договор - это обязательный + в колонке А.
Также в этой серой строке есть определенные формулы в колонках F, H, J и K, которые распространяются на подстроки конкретного договора.

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

Можно ли как то модифицировать эти формулы, чтобы они использовали диапазон от одного + до следующего + в колонке А?
Бывает такое, что кто либо из коллег забывает исправить диапазоны формул и они начинают считать суммы неверно.

В примере, думаю, будет более понятно.
Изменено: vikttur - 24.09.2021 11:35:16
Одинаковые действия с множеством файлов xlsx
 
Добрый день, уважаемые форумчане!
Есть множество файлов (около 25 таблиц xlsx), абсолютно одинаковых по структуре, но разные по наполнению.
Раз в неделю требуется открыть каждый файл, в ячейке A1 вбить текущую дату и диапазон ячеек O6:AB300 залить определенным цветом.
Вручную это несколько утомительно и отнимает много времени.
Думаю как бы это автоматизировать, не используя в этих файлах макросы, так как эти файлы присылают с разных мест и на удаленных компьютерах не факт что разрешены макросы.
Изменено: vikttur - 13.07.2021 12:45:35
Динамический путь к файлу в формуле
 
Здравствуйте!
Есть на сервере папка с несколькими одинаковыми по структуре файлами, отличающимися друг от друга городом в названии файла.
Есть общая таблица, в которую хотелось бы подтягивать данные из этих файлов из папки. Но подтягивать надо из файла, соответствующего городу в ячейке строки.
Например: в общей таблице в ячейке M5 находится слово Белгород, значит в ячейку N5 нужно подставить данные из файла на сервере \\srv\путь_файла\Белгород - информация.xlsx
Я придумал формулу:
Цитата
{=ИНДЕКС('\\srv\путь_файла\Белгород - информация.xlsx'!ОБЩАЯ;ПОИСКПОЗ($L$1&$E5;'\\srv\путь_файла\[Белгород - информация.xlsx]ШАБЛОН ДЛЯ ЗАПОЛНЕНИЯ'!$B$5:$B$219&'\\srv\путь_файла\[Белгород - информация.xlsx]ШАБЛОН ДЛЯ ЗАПОЛНЕНИЯ'!$C$5:$C$219;0);19)}

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


Помогите пожалуйста, как в этой формуле заменить слово Белгород на содержимое ячейки M5 и чтобы она выдавала требуемый результат?
Подбор диапазона значений по условию
 
Доброго времени суток, друзья!
Когда-то на этом форуме мне помогли с формулой, которая подсчитывает стоимость товара из базы данных по методу FIFO. Она прекрасно работает, но сейчас мне необходимо эту формулу немного модернизировать, но никак не приходит в голову, как это можно сделать.

Требуется в диапазоны данных (эти диапазоны выделены в формуле) брать только строки с определенным условием, а именно строки с текстом "Покупка" в колонке С (см. пример)

Цитата
=ЕСЛИ(ЕСЛИ(C6="Продажа";K6;$T$1);СУММПРОИЗВ((ТЕКСТ(R$3:R6-S6+ЕСЛИ(C6="Продажа";K6;$T$1);"[>0]0,000;\0")-ТЕКСТ(R$3:R6-S6;"[>0]0,000;\0")-ТЕКСТ(R$3:R6-K$3:K6-S6+ЕСЛИ(C6="Продажа";K6;$T$1);"[>0]0,000;\0")+ТЕКСТ(R$3:R6-K$3:K6-S6;"[>0]0,000;\0"))*L$3:L6*(A$3:A6=A6))/ЕСЛИ(C6="Продажа";K6;$T$1);)

СУММЕСЛИ не подходит, так как нужна не сумма значений в диапазоне по условию, а именно сам текст этих значений.
Ну либо придется переписывать формулу как-то по другому, если такой вариант не возможен.

Для справки: Табличка показывает в колонке "Цена безубытка" стоимость товара (при внесении информации о количестве продаваемого товара), по которой товар можно продать, не уходя в минус при расчётах по методу FIFO.
Поиск последнего значения по заданному условию
 
Друзья, доброго времени суток!
Мне на работе дали табличку для учета прихода/отгрузки товаров согласно очередности, то есть используя метод ФИФО (первый пришел - первый ушел)
Она отлично работает и выполняет необходимые мне расчеты, но она мне понадобилась в режиме онлайн, чтобы коллеги могли удаленно ее видеть.
При попытке ее перенести в Google-Таблицы перестала работать одна формула, а конкретнее функция ПРОСМОТР (LOOKUP)
Код
ПРОСМОТР(2;1/($A7=$A$3:$A6);P$3:P6)

Таблица огромная и это необходимо для оперативного понимания остатков и средней цены товара при вводе его названия.
Возможно, таблица немного корявенькая, но уж какая досталась от коллег.

Я так понимаю, ПРОСМОТР не совсем корректно работает в данном случае в google, поэтому мне необходимо придумать замену этой формуле, чтобы ее успешно понимали google-таблицы.

Я в примере колонки с неработающими формулами выделил желтым цветом, а также приложил в табличку скриншот google-таблицы.
Буду рад помощи.
Перебор значений для получения результата с двумя знаками после запятой
 
Доброе утро, друзья!

Поставлена передо мной непосильная задача, возможно для кого-то совершенно обычная.
Есть спецификация с несколькими параметрами:
-кол-во метров-цена за 1 метр-количество месяцев
-цена за все метры за 1 месяц
-общая сумма по строке
Количество строк в спецификации небольшое, максимум 10.

Неизменными являются количество метров и итоговая сумма по всей спецификации. Есть примерная цена за 1 метр. (выделена желтым). Меняя ее необходимо добиться, чтобы получающиеся значения за месяц и итого по строке были до 2 знаков после запятой без применения формул округления. А также сумма всех итогов строк должна совпадать с требуемым значением.
Ручной перебор утомителен и пока не приносит результатов.
Применение функции "Поиск решения" также не принесло успеха (либо я не умею ей пользоваться), так как она не округляет значения до 2 знаков после запятой и ищет только по одной строке.

Прошу помочь!
Макрос вставки гиперссылки на текст в ячейке
 
Здравствуйте!
Когда-то давно в сети нашел макрос вставки гиперссылки в ячейку
Цитата
Function GetFilePath(Optional ByVal Title As String = "Выберите файл Контракта", _
                    Optional ByVal InitialPath As String = "C:\", _
                    Optional ByVal FilterDescription As String = "Документы Adobe", _
                    Optional ByVal FilterExtention As String = "*.pdf*") As String
   ' функция выводит диалоговое окно выбора файла с заголовком Title,
   ' начиная обзор диска с папки InitialPath
   ' возвращает полный путь к выбранному файлу, или пустую строку в случае отказа от выбора
   ' для фильтра можно указать описание и расширение выбираемых файлов
   On Error Resume Next
   With Application.FileDialog(msoFileDialogOpen)
       .ButtonName = "Выбрать": .Title = Title: .InitialFileName = InitialPath
       .Filters.Clear: .Filters.Add FilterDescription, FilterExtention
       If .Show <> -1 Then Exit Function
       GetFilePath = .SelectedItems(1): PS = Application.PathSeparator
   End With
End Function

Private Sub ФГиперссылка_на_файл()
   ИмяФайла = GetFilePath ' запрашиваем имя файла
   If ИмяФайла = Empty Then
       Cont = Application.InputBox("Введите номер Контракта")
       If Cont Then Selection.Value = Cont
   Else
       Selection.Value = Replace(Replace( _
                           "=HYPERLINK(""ИмяФ"",""№конт"")" _
                           , "ИмяФ", ИмяФайла) _
                           , "№конт", Application.InputBox("Введите номер Контракта"))
   End If
End Sub
Данный макрос позволяет выдать окно выбора файла, после чего выдает окно ввода текста в ячейку, на который будет установлена гиперссылка на выбранный ранее файл.
Отличный макрос, респект его автору.
Я успешно использовал данный макрос до тех пор, пока номера контрактов содержали только цифры.
При необходимости ввести просто текст без гиперссылки, просто нажимаю отмену выбора файла и в следующем окне пишу текст.

При попытке ввести номер договора, содержащий буквы или символы, выдает ошибку Run-time error '13' Type mismatch и при нажатии на дебаг выделяет слова
Цитата
If Cont Then
Подскажите, что не так с этой строкой? Как сделать, чтобы можно было вводить не только цифры, но и текст типа 123-АБ/233-19
Построчный подитог по условию
 
Здравствуйте уважаемые форумчане!
Понадобилось мне сделать табличку со следующими данными:

Есть два рынка, на каждом рынке есть своя сумма денежных средств, так называемый баланс.
Ежедневно происходят движения товаров и хотелось бы получать по итогам каждого дня автоматически вычисленную сумму денежных средств на остатке конкретного рынка.
Я состряпал формулу с условиями ЕСЛИ и И, но мне кажется, я копаю не в том направлении.
Код
=ЕСЛИ(И(G3="Основной";C3="Покупка");H2-F3;(ЕСЛИ(И(G3="Основной";C3="Продажа");
H2-F3;(ЕСЛИ(И(G3="Основной";C3="Зачисление");H2+F3;(ЕСЛИ(И(G3="Основной";C3="Списание");H2-F3;)))))))

Эта формула работает, только если есть один рынок.Подробнее в примере во вложении (столбец с формулами выделен красным текстом)
Прошу помочь!
Подтягивание к идентификатору значений с другого листа с подменой данных
 
Добрый день, уважаемые форумчане.
Столкнулся со следующей проблемой подтягивания данных с другого листа:
Имеется лист с огромным количеством строк с данными (в примере лист называется План закупки).
В каждой строке есть уникальный номер-идентификатор строки (в примере колонка F "№ позиции плана")
По этому идентификатору я на другом листе (в примере лист ЗАКУПКИ) в общую табличку стягиваю некоторые данные по формуле:
Код
 =ЕСЛИ(ЕПУСТО(ЕСЛИОШИБКА(ИНДЕКС('План закупки'!$A$24:$AT$27;ПОИСКПОЗ(ЗАКУПКИ!$B5;'План закупки'!$F$24:$F$27;0);15);""));"";ЕСЛИОШИБКА(ИНДЕКС('План закупки'!$A$24:$AT$27;ПОИСКПОЗ(ЗАКУПКИ!$B5;'План закупки'!$F$24:$F$27;0);15);""))

Всё отлично ищется и находится, но на исходном листе данных (План закупки) есть колонка О с регионами вида:
Москва
Московская область
Калуга
Калуга
Калужская область
и т.д. (областной город и область забиты отдельно)

В сводном листе (ЗАКУПКИ) мне не нужна разбивка на город-область, а необходимо, чтобы указывался только областной город (Москва, Калуга, Киров и т.д.)
То есть мне нужно, чтобы при обращении вышеуказанной формулой к строке с регионом Московская область, мне был выдан ответ Москва.
Переделывать данные в исходном листе не вариант, так как данные постоянно обновляются из внешнего источника.

Подозреваю, что решение где то рядом, но после праздников сообразить никак не могу...
Помогите, пожалуйста!
Краткий пример с удаленными личными данными во вложении.
Вставка формулы с ГИПЕРССЫЛКА макросом
 
Добрый вечер!
Пытаюсь сделать формулу ГИПЕРССЫЛКА более удобной, с возможностью выбирать путь к файлу на диске.
Код
Function GetFilePath(Optional ByVal Title As String = "Выберите файл Контракта", _
                     Optional ByVal InitialPath As String = "C:\", _
                     Optional ByVal FilterDescription As String = "Документы Adobe", _
                     Optional ByVal FilterExtention As String = "*.pdf*") As String
    ' функция выводит диалоговое окно выбора файла с заголовком Title,
    ' начиная обзор диска с папки InitialPath
    ' возвращает полный путь к выбранному файлу, или пустую строку в случае отказа от выбора
    ' для фильтра можно указать описание и расширение выбираемых файлов
    On Error Resume Next
    With Application.FileDialog(msoFileDialogOpen)
        .ButtonName = "Выбрать": .Title = Title: .InitialFileName = InitialPath
        .Filters.Clear: .Filters.Add FilterDescription, FilterExtention
        If .Show <> -1 Then Exit Function
        GetFilePath = .SelectedItems(1): PS = Application.PathSeparator
    End With
End Function
 
Sub Гиперссылка_на_файл()
    ИмяФайла = GetFilePath ' запрашиваем имя файла
    If ИмяФайла = "" Then Exit Sub    ' выход, если пользователь отказался от выбора файла
 Selection.Formula = "=ГИПЕРССЫЛКА(" & ИмяФайла & ";" & Application.InputBox("Введите номер Контракта") & ")"
End Sub
При выполнении кода выпадает ошибка 1004. Что-то не так с синтаксисом самой формулы при выводе в ячейку (предпоследняя строка кода).
Если убрать знак = перед ГИПЕРССЫЛКА, то формула вставляется в виде текста в ячейку.

И вторая проблема: не пойму как переменную имяфайла заключить в кавычки (как это и должно быть в формуле)
Макрос выбора пути к файлу для формулы ГИПЕРССЫЛКА
 
Добрый день, уважаемые форумчане! Требуется ваша помощь.

Есть реестр учета контрактов объемом более 1000 строк. Для удобства сделаны гиперссылки к самим договорам.
Договора находятся в сетевой папке. Адрес к ним получается типа: \\192.168.1.200\Обмен\Договор.xlsx
Ссылки делаются через контекстное меню: ПКМ - Гиперссылка - выбор пути к файлу
При случайном перемещении реестра и возврате обратно ломаются гиперссылки к файлу. Так как пользуются данной таблицей несколько сотрудников, я устал уже чинить гиперссылки и никто не признается кто сломал.

До сего момента я чинил ссылки найденным здесь макросом:
Код
Sub ЗаменаИспорченныхГиперссылок()
    On Error Resume Next
    Dim hl As Hyperlink, oldString As String, newString As String, sh As Worksheet
    ' часть гиперссылки, подлежащая замене
    oldString = "\\192.168.0.200\Users\User\AppData\Roaming\Microsoft"
    ' на что заменяем
    newString = "\\192.168.0.200\обмен"
    For Each sh In ActiveWorkbook.Worksheets    ' перебираем все листы в активной книге
        For Each hl In sh.Hyperlinks    ' перебираем все гиперссылки на листе
            If hl.Address Like oldString & "*" Then
                hl.Address = Replace(hl.Address, oldString, newString)
            End If
        Next
    Next sh
End Sub

Сейчас данный код почему-то перестал работать. Кстати, почему? Ошибку не найду.

Появилась мысль переделать все гиперссылки из контекстного меню в функцию ГИПЕРССЫЛКА, чтобы можно было в случае чего менять пути путем автозамены части текста в формуле.
Но в эту формулу путь к файлу необходимо будет прописывать вручную, что проблематично для некоторых пользователей.
Как бы реализовать кнопку выбора файла в проводнике для функции ГИПЕРССЫЛКА?
Во вложении пример файла.
Подбор цены под определенную сумму
 
Здравствуйте, друзья!
При проведении аукциона выигравшим участником была установлена определенная сумма контракта.
Исходя из этой суммы необходимо рассчитать цену за единицу товара, разделив ее на фиксированное количество.
Это не всегда получается корректно, так как бывает количество знаков получается после запятой более 2-х.
Помогите, пожалуйста, формулой или макросом подбора цены за единицу товара, чтобы умножив ее на кол-во получалась выигранная сумма.
Реальный пример во вложении (предел отклонения цены например не более 10%, чтобы не получилось что один товар стоит рубль, а другой 500 рублей.)
Благодарю!
Определение значения по определенным параметрам с другого листа
 
Добрый день!
Мне необходимо формировать несколько разных документов с одинаковыми значениями.
Мне надоело копировать-вставлять в разные книги и я решил сделать всё в одной книге, подтягивая данные с одного источника.
В вкладке "Подбор цен и ссылок" я забиваю цены и ссылки на предложения.
В вкладке "Цена" мне нужно формировать отчет определенного вида с теми же данными, что и в предыдущей вкладке.
Помогите, пожалуйста, с формулой, которая определит требуемое значение на вкладке "Подбор цен и ссылок" и перенесет его на лист "Цена".
В примере я выделил желтым.
Спасибо!
Вычисление итогов по двум параметрам
 
Добрый день, уважаемые!
Прошу помочь в вычислении итогов по двум заданным параметрам.
Есть таблица учета данных материалов (остатки, приход, расход)
Материалы приходят строго под конкретный участок, списываются соответственно с него же. Соответственно имеем два основных параметра: Наименование материала и № участка.
Есть необходимость оперативно видеть остатки по каждому материалу/участку.
На отдельном листе "Номенклатура" есть список номенклатуры, из которого и берется название материалов выпадающим списком во вкладку "Приход". Значения наименований уникальны и не повторяются.
Есть мысль открывать вкладку "номенклатура" и сразу видеть все остатки по участкам.
Сводная таблица не совсем удобна в силу некоторых причин.

В одной из ячеек оставил формулу массива, которую пытался изобрести по примерам с сайта - не вышло. Может предложите другие варианты?
Помогите, пожалуйста!
Обрезать текст в ячейке до целого слова
 
Имеется задача:
Есть список слов через запятую. Надо ограничить его 100 символами, заканчивая целым словом, не разрезая.
У меня почти получилось, но не могу избавиться от запятой в конце слова. Глаз замылился уже, не могу сообразить как убрать.
Пример во вложении - поможете?
Отправка части таблицы по указанному e-mail
 
Добрый день, друзья!  
Имеется задача: необходимо постоянно рассылать поставщикам данные о отгрузках.  
Есть общая таблица, из которой нужно отправить только одну строку конкретному поставщику, указанному в столбце А.  
На другом листе имеется база всех поставщиков и их e-mail.  
Помогите пожалуйста написать макрос, при выполнении которого будет сравнение поставщиков на листе 1 с листом 2 и при нахождении совпадения - отправлять одну строчку (либо простой вставкой в тело письма, либо с сохранением этой строчки в отдельный файл) по е-майлу конкретного поставщика.  
Примитивный пример во вложении.
Формирование отчета из текстовых данных
 
Добрый день, форумчане!  
Имеем: огромная таблица с десятком тысяч данных (вкладка "Исходник")  
Из этих данных необходимо постоянно формировать отчеты и заявки (соотв. вкладки в примере)  
В отчет нужно формировать данные по категории, а в заявку - данные по категории и по магазину.  
Отчет, я примерно понимаю - можно сделать в виде сводного отчета. Но как - слабо представляю. А вот в заявку - надо формулу какую то, обрабатывающую текст. Помогите плиз, если понятен мой пример.
Условное форматирование строки
 
Добрый день, уважаемые!  
Имеется таблица с большим массивом данных (во вложении краткий пример)  
Как сделать, чтобы при заполнении ячейки "Дата отправки" - вся строка закрашивалась в желтый цвет, а при заполнении ячейки "Статус доставки" - в зеленый?  
Это необходимо для визуального контроля, так как фильтры не всегда помогают.  
Условное форматирование одной ячейки я нашел, а вот всей строки по одной ячейке - не соображу как сделать.
фильтрация текстовых данных
 
Друзья, приветствую вас! Возникли некоторые трудности с фильтрацией данных, а именно!  
Имеется огромная сложная таблица, в которую вносится приход и отгрузка товара. (соответствующие вкладки в примере)  
Для отгрузки товара мне необходимо делать заявку на машину (вкладка "Заявка АКС"), а также упаковочный лист на груз (вкладка "Упаковочный лист")  
Для их заполнения требуются данные с листа "Отгрузка". На листах "Заявка АКС" и "Упаковочный лист" эти данные выделены красным.  
Ранее я пользовался формулами, которые подтягивают данные из ячеек С2, D2, E2 из вкладки "Отгрузка". Это не очень удобно, так как приходится ставить два фильтра, а именно: получатель С5(кому доставлять товар) и № заказа Е5(каждый заказ отправляется отдельно) - это я делаю для подтягивания числовых данных из ячеек К3:Т3 вкладки "Отгрузка". Но текстовые данные невозможно получить с помощью ПРОМЕЖУТОЧНЫЕ.ИТОГИ, поэтому приходится ставить еще 3 фильтра С2:Е2. Это не очень удобно, так как можно случайно промахнуться в каком нибудь фильтре.  
А теперь мне нужны еще данные для вкладки "Упаковочный лист" (там данные прокомментированы) - прийдется делать кучу фильтров!  
Вопрос: Как избавиться от фильтров С2:Е2, а также подтягивать все нужные данные из "Отгрузка" (выделены красным)?  
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
Проверка ячеек на похожесть
 
Друзья, требуется ваша помощь! Есть огромная таблица (вкладка "Отчет"), в которой ведутся такие данные как: Название получателя, дата отправки и сумма отправки.  
Для формирования окончательного отчета также требуется номер и дата накладной (пустые ячейки выделены красным).  
Эти данные раз в месяц в виде реестров (вкладка "Табличка") нам присылает поставщик. Но! Как совместить две таблички, если получатель у нас и у разных поставщиков занесен в таблицу по разному? На сумму просьба не ориентироваться - сумму не всегда нам предоставляют.  
Надо каким то образом организовать проверку данных по ячейкам "Грузополучатель", типа найти "УФПС Омской области" - начало грузополучателя у всех одинаковое.  
Вручную проставлять огромная проблема - таблица имеет более 10000 строк.
Макрос сохранения листа в новый файл
 
Всем доброго дня!  
Есть файл, в котором в листе "Печать" при выборе определенных данных формируется определенным образом лист "Упаковочный лист", который я потом при помощи макроса отправляю на печать.  
Также необходимо лист "Упаковочный лист" сохранять в отдельный файл с указанием названия файла, типа: %название_листа%-%текущая_дата%-%номер_по_порядку% (Упаковочный лист-20.08.10-1.xls) - ну либо как то по другому, если это невозможно сделать.  
 
В просторах интернета нашел макрос, который сохраняет все листы книги по отдельным файлам, но работает он у меня как то криво, да и все листы не нужны.  
----------  
Sub SaveSheets()  
Dim i As Integer  
Dim iSheetsAll%, iSheetName$, iPath$  
   Application.ScreenUpdating = False  
   iSheetsAll = ActiveWorkbook.Sheets.Count  
   iPath = "C:\Temp\"  
   For i = 1 To iSheetsAll  
       Sheets(i).Select  
       Sheets(i).Copy  
       iSheetName = ActiveSheet.Name  
       ActiveWorkbook.SaveAs Filename:=iPath & iSheetName & ".xls", FileFormat:=xlNormal  
       ActiveWindow.Close  
   Next  
   Application.ScreenUpdating = True  
   MsgBox "Экспорт листов книги завершён!" & vbCrLf & "Файлы сохранены в папке: " & iPath, , ""  
End Sub  
-----------  
 
Я совсем не силен в макросах - может кто поможет реализовать сохранение конкретного листа отдельно?
Удаление ненужных значений по условию
 
Имеется файл по формированию упаковочных листов.  
На вкладке "Печать" - ввожу данные, которые автоматически появляются во вкладке "Упаковочный лист"  
Для каждого упаковочного листа бывает разное количество товаров (от одного до десяти)  
Соответственно я в листе "Печать" делаю 10 строчек под товар, и в листе "Упаковочный лист" - также 10 строчек, которые иногда бывают не все заполненные.  
Каждая единица товара должна иметь свой номер места - это можно увидеть во вкладке "Упаковочный лист", по простейшей формуле.  
Но! Если товаров менее 10, тогда остаются пустые строчки. А вот места все равно считаются.  
Вопрос:  
Как сделать, чтобы в листе "Упаковочный лист" в столбцах B и D не выводились данные, если все остальные столбцы пустые? (в примере - строка 23-28)  
Пример во вложении(66 Кб.)  
Спасибо!
Текстовый аналог СУММЕСЛИ
 
Всем добрый день!  
Имеются следующие данные:  
Лист 1 Столбец А - текст  
Лист 1 Столбец Б - число  
Лист 2 Столбец А - выпадающий список данных из "Лист 1 Столбец А"  
Лист 2 Столбец Б - формула: =СУММЕСЛИ(Лист 1!А:А;А:А;Лист 1!В:В), которая автоматически вставляет числовое значение из Листа 1 Столбца В в случае, если текст на обоих листах в Столбце А совпадает.  
 
Как реализовать то же самое, но если Лист 1 Столбец В - текст???    
Пример - во вложении.  
Спасибо за ответы!
Автоматическое копирование на другой лист
 
Всем добрый день! Есть некая таблица, на которой на первом листе вносится информация о продажах (группа товара, поставщик, покупатель, сумма и многое другое...)  
На втором листе имеется база покупателей.  
На третьем листе находится довольно таки сложная заявка на транспорт для доставки.  
 
Так вот задача: На первом листе я ставлю фильтр на группе товара и на покупателе (обязательно оба фильтра) - это необходимо для того, чтобы в третий лист (заявка на транспорт) автоматом вставлялись различные цифровые данные, полученные посредством функции =ПРОМЕЖУТОЧНЫЕ.ИТОГИ(9;P5:P17953)  
Вопрос №1: Как можно сделать так, чтобы в заявку на транспорт автоматически вставлялась выбранная группа товара? (она всегда на каждую заявку одна!)  
Вопрос №2: Как можно сделать так, чтобы при выборе фильтром покупателя на 1-м листе, со 2-го листа при совпадении имени покупателя копировалась целиком строка на 3-й лист?  
 
Таблица громадная, и вручную копировать очень сложно.  
Может очень сумбурно объяснил, но примерчик краткий смотрите во вложении.  
Спасибо за ответы!
Страницы: 1
Наверх