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

Страницы: 1 2 След.
Копирование значений из правого столбца по условию
 
МВТ, в xlsx конечно ничего работать не будет- просто скопировал страницу из основного xlsm`а. Уж больно тяжелый.)
Работает на "ура". Проблема в том, что опыта у меня не так много, однако благодаря таким альтруистам как Вы получается решать задачи, когда опускаются руки. Большое спасибо!)
Копирование значений из правого столбца по условию
 
Добрый день, господа.

Наступил творческий кризис. Фантазия закончилась, вы моя последняя надежда.
Значению в ячейке A2 соответствуют значения в диапазоне B2:B11.
Значению в ячейке A12 соответствуют значения в диапазоне B12:B21.
Значению в ячейке A22 соответствуют значения в диапазоне B22:B31.
И т.п. Диапазоны в столбцах динамические.

Необходимо определить соответствие ячейке A2 диапазона из столбца B.
В столбец GX макросом я копирую уникальные значения из столбца A.
В идеале нужно добавить значения из найденного диапазона в ячейку в столбце GY, сцепленные через запятую и исключая повторяющиеся значения. Данный пункт реализован через пользовательскую функцию, однако с определением диапазона проблемы.

Мне видится реализация идеи а-ля функция "ВПР". Есть значение в ячейке GX2, по нему определяем диапазон в столбцах A и B, который используется в пользовательской функции.

Буду очень признателен за Ваши идеи.
Поиск и вывод текста в ячейку
 
Нашел на форуме такой вариант и немного обработал для своей задачи:
=ЕСЛИОШИБКА(ИНДЕКС(Бренды!$B$2:$B$1701;НАИМЕНЬШИЙ(ЕСЛИ(ЕЧИСЛО(ПОИСК(Бренды!$B$2:$B$1701;'Исходные данные'!$C222));СТРОКА(Бренды!$B$2:$B$1701)-1);СТРОКА('Исходные данные'!$B$1)));"-")

Однако есть проблема-в случае, если во фразе, по которой происходит поиск находится дефис (например "Бумага Epson Iron-on Peel Transfer для струйной печати"), то массив возвращает ошибку. Удаляя дефис все отрабатывает на отлично.

Так же нашел на просторах форума пользовательскую функцию (поиск текста), которую необходимо доработать для поиска словосочетаний, однако фантазии (и умения) не хватает:
Код
Function LikeCell(cl As Range, rng As Range) As String
    For Each clr In rng.Cells
        For I = 0 To UBound(Split(cl, " "))
            If Split(cl, " ")(I) = clr Then
                If rez = Empty Then
                    rez = clr
                Else
                    rez = rez & ", " & clr
                End If
            End If
        Next
    Next
LikeCell = rez
End Function
Господин The_Prist советовал:
Цитата
Если уж через Like, то имеет смысл для каждого слова-образца добавлять пробелы слева и справа и так же пробелы добавлять к сравниваемому тексту. Тогда будут находится только целые слова/словосочетания.
Буду рад вашей помощи для доработки данной функции.
Поиск и вывод текста в ячейку
 
Evic, к сожалению все не так просто, проблема в отработке формулы, которая ищет по неполному вхождению, т.е. поиск идет не по словосочетанию, а по одному из слов запроса.
Поиск и вывод текста в ячейку
 
Господа, при проверке использовал не слишком большую выборку данных.
Появилась следующая проблема:
в случае, если в названии позиции используется наименование бренда в два слова, и второе слово так же является названием другого бренда (как оказалось такое не редкость), то в результат подставляется второе название бренда и логика файла нарушается.

В приложенном файле данный момент можно лицезреть в ячейке C40 на листе "Свод".

Буду признателен, если поделитесь своими идеями по поводу решения данного вопроса.
Поиск и вывод текста в ячейку
 
Прикладываю конечный вариант. Немного дополнил формулы устранением лишних пробелов, условиями "еслиошибка" и подтянул для пустого значения в столбце "E" условие подстановки значения из столбца "M".

P.S. V, про формулу с брендом все понял.)
Поиск и вывод текста в ячейку
 
V, ваш способ отлично подошел. Подучу регулярки, на всякий случай.

Владимир, V, большое спасибо за помощь!  
Поиск и вывод текста в ячейку
 
V, тестирую. В целом формула справляется отлично.

Косяк с нахождением бренда судя по-всему по той же причине. Его ассоциируют с брендом IQ, а не с IQ Premium, т.к. при поиске используется не точное хвождение всех слов, а частичное.
Поиск и вывод текста в ячейку
 
Обновленный пример.
Поиск и вывод текста в ячейку
 
Владимир, в примере показана только часть выборки. Бумага в данном случае является типом товара, который должен указываться в столбце TypePrefix. Общее количество наименований товаров 55 000.
Поиск и вывод текста в ячейку
 
Добрый день.

Прошу вашей помощи в решении задачи, товарищи.

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

В примере:
В столбце "L" находится название позиции, оттуда при помощи массива извлекается бренд и предается в столбец "A". После этого в столбец "C" передается текст, находящийся в левой части от названия бренда.

В столбце "E" частично получилось реализовать вывод текста, находящегося правее бренда, однако появились две проблемы:
1. В случае, если в названии позиции после бренда нет слов, то вместо вывода нулевого результата выводится часть названия бренда.
2. В случае, если после названия бренда стоит несколько слов, то вместо вывода всех слов выводится последнее из этих слов.

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

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

Не буду спорить-знаний пока не хватает. Буду восполнять пробелы.)

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

Код
Sub Отправка()
 
    Application.DisplayAlerts = False
    Dim OutlookApp As Object, SM As Object
    Dim cell As Range
    Set OutlookApp = CreateObject("Outlook.Application")
     
    Dim rng As Range
    Set rng = Intersect(ActiveSheet.Columns("E"), ActiveSheet.UsedRange)
    Set rng = rng.SpecialCells(xlCellTypeConstants)
     
    For Each cell In rng
         
        If cell.Value Like "*@*.*" Then
         
            Set SM = OutlookApp.CreateItem(olMailItem)
             
            With SM
                .To = cell.Value
                .Subject = "Привет"
                On Error Resume Next
                .Body = Activedocument.Content
                .HTMLBody = Activedocument.Content.Text
                .Display
                .Close
                .HTMLBody = "Добрый день." & .HTMLBody
                .Send
            End With
             
        End If
         
    Next
     
    Set SM = Nothing
    Set OutlookApp = Nothing
    Application.DisplayAlerts = True
End Sub
 
Макрос отправки писем по списку адресов, Проблема на этапе формирования нескольких писем
 
Прикладываю файл.
Макрос отправки писем по списку адресов, Проблема на этапе формирования нескольких писем
 
Добрый день, товарищи.
На данный момент моих знаний, видимо, не хватает для решения данной задачи. Возможно Вы сможете посоветовать что-либо дельное.

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

Провел довольно много времени в интернетах в поисках информации, однако намертво застрял. Как я понимаю необходимо пустить цикл повторно для каждого адресата. С другой стороны я понимаю, что ничего не понимаю.
Код
Sub Отправка()
 Application.DisplayAlerts = False
 Dim OutlookApp As Object, SM As Object
 Dim cell As Range
 Set OutlookApp = CreateObject("Outlook.Application")
 For Each cell In Columns("e").Cells.SpecialCells(xlCellTypeConstants)
 If cell.Value Like "?*@?*.?*.?*" And _
 Application.WorksheetFunction.CountA(cell) > 0 Then
 Set SM = OutlookApp.CreateItem(olMailItem)
 With SM
 SM.To = cell.Value
 SM.Subject = "Привет"
 On Error Resume Next
 SM.Body = Activedocument.Content
 SM.HTMLBody = Activedocument.Content.Text
 SM.Display
 SM.HTMLBody = "Как дела?" & SM.HTMLBody
 Set SM = Nothing
 Set OutlookApp = Nothing
 End With
 End If
 Next
End Sub 
Сцепить несколько слов
 
Добрый день, товарищи.

Решил создать инструмент для облегчения работы специалистов по контекстной рекламе. Задача поставлена таким образом, что бы инструмент позволял человеку, не сведущему в нюансах создания объявлений быстро запустить рекламную кампанию в Яндекс.Директ по всем канонам специалистов.

Застрял на моменте создания быстрых ссылок.
Описание:
В столбце "D", в ячейки 7-10 человек вводит названия подразделов сайта, на которые будет производиться переход. Необходимо, что бы данные названия сцеплялись с основной ссылкой на сайт. Хвост состоит из utm-метки, которая необходима для более точного анализа переходов на сайт в системах сбора и анализа статистики.                                                                                                                                                                                                                                       Проблема:  
На данный момент пытался реализовать данную функцию посредствам функции "ПСТР", однако появилась проблема с подстановкой двух и более слов. Либо значения обрезаются, либо не подставляется "_". В файле проблемные места выделены желтой заливкой и комментариями. Да и такой способ видится мне недостаточно изящным. Возможно Вы сможете подсказать более изящный способ решения данной задачи. Конечный вариант файла планирую выложить сюда для общего пользования.
Макрос сохранения файла и последующим разрывом связей и чисткой от макросов., Всплывает ошибка.
 
Добрый день, господа.
Выкладываю свое творение.
Данный макрос сохраняет файл с заданным именем из ячейки в заданной папке, с заданным форматом(в данном случае .xlsx), после чего разрываются связи с другими книгами и скрывается первый лист в файле.
Скрытый текст
Макрос сохранения файла и последующим разрывом связей и чисткой от макросов., Всплывает ошибка.
 
Юрий М, The_Prist, Sanja, буду признателен за проверку логики построения и написания кода.
Макрос сохранения файла и последующим разрывом связей и чисткой от макросов., Всплывает ошибка.
 
Товарищи, решил пойти по другому пути. В итоге все получилось. Выкладываю код и файл- возможно кому пригодится.
Создается папка в указанной дирректории с названием из конкретной ячейки, далее туда копируется активная книга, после чего приложение Excel закрывается.
Прошу проверить код на правильность-не хочу создать проблемы для других людей. Заранее спасибо.

Код
Sub Создание_в_папку()
Application.DisplayAlerts = False
On Error Resume Next
folder$ = "C:\Users\Мой\Desktop\" & Sheets("Лист1").Range("E2").Value & "\"
MkDir folder$
Filename = [E2] & ".xlsx"
Err.Clear: ActiveWorkbook.SaveAs folder$ & "Сохранение в папку" & " " & Filename, xlOpenXMLWorkbook: DoEvents
If Err Then Exit Sub
Application.Quit
End Sub 
Изменено: Алексей - 20.04.2014 17:32:43
Макрос сохранения файла и последующим разрывом связей и чисткой от макросов., Всплывает ошибка.
 
Юрий М, спасибо за ответ. Может подскажите на ночь глядя где ошибка? Проблема с сохранением файла в созданной папке.


Код
Sub Создание_папки()
Application.DisplayAlerts = False
On Error Resume Next
For Each oCell In Range([e2], [e2].End(xlUp))
    If Not IsEmpty(oCell) Then MkDir "C:\Users\Мой\Desktop\" & oCell
Next
ChDir "C:\Users\Мой\Desktop & oCell"
    ActiveWorkbook.SaveAs Filename:= _
        "C:\Users\Мой\Desktop\" & oCell & ".xlsx", FileFormat:= _
        xlOpenXMLWorkbook, CreateBackup:=False
End Sub
 
Макрос сохранения файла и последующим разрывом связей и чисткой от макросов., Всплывает ошибка.
 
Юрий М, сейчас файл сохраняется в формате xlsx, но я решил перестраховаться и оставил в коде часть с разрыванием связей. Целесообразно это или нет? =)
Макрос сохранения файла и последующим разрывом связей и чисткой от макросов., Всплывает ошибка.
 
Добрый вечер.
Немного помудрив доделал макрос. Код скину в понедельник-файл остался на работе.

Сейчас буду решать задачу с сохранением файла в папку, создаваемую с названием из заданной ячейки. В эту же папку будут сохраняться и фалы,в количестве четырех, в которых так же используется данный макрос. Соответственно необходимо сделать проверку на то, что если папка с названием из ячейки существует, то сохраняем файл в эту папку, если нет, то папка должна быть создана. Название папки-это дата из конкретной ячейки. Если у кого есть идеи как сделать проверку, буду рад послушать. =)
Макрос сохранения файла и последующим разрывом связей и чисткой от макросов., Всплывает ошибка.
 
На данный момент макрос выглядит следующим образом:
Скрытый текст
Изменено: Алексей - 16.04.2014 14:58:08
Макрос сохранения файла и последующим разрывом связей и чисткой от макросов., Всплывает ошибка.
 
Проблема при открытии файла все еще актуальна:"Действительный формат открываемого файла отличается от указываемого его расширением имени файла... ".
Открыв файл и сохранив его еще раз с другим названием и в формате .xls при повторном открытии ошибка не возникает.
Довольно странно получается.

Как я понимаю, при запуске макроса происходит следующая последовательность действий:
1. Подавляются всплывающие ошибки
2. Файл сохраняется в заданной дирректории с названием взятым из ячейки, а так же с самим макросом и связями. Несмотря на то, что при сохранении прописан формат .xls файл сохраняется в формате .xlsm, т.к шаг с удалением макросов не наступил.
3. Открывается сохраненный файл из заданной дирректории.
4. В открытом файле разрываются связи.
5. В открытом файле удаляются макросы.
6. Файл закрывается.

Из этого следует, что ошибка 2, описанная мной изначально, возникает на шаге 2.
Либо на шаге 2 нужно сохранять файл в формате .xlsm, и перед закрытием добавить сохранение в формате .xls, либо просто добавить шаг сохранения активной книги перед закрытием в формате .xls.

И появилась проблема, с закрытием файла- пишет "Compile error: Expected Function or Variable".
Макрос сохранения файла и последующим разрывом связей и чисткой от макросов., Всплывает ошибка.
 
Юрий М, на данный момент 2010.
Изменено: Алексей - 16.04.2014 09:13:53
Макрос сохранения файла и последующим разрывом связей и чисткой от макросов., Всплывает ошибка.
 
Цитата
Sanja пишет: Делать вновь открытую книгу АКТИВНОЙ и затем удалять связи
В данном случае ругается на .Activate. - Method or data member not found.
Макрос сохранения файла и последующим разрывом связей и чисткой от макросов., Всплывает ошибка.
 
Sanja, при добавлении Application.DisplayAlerts = False появилась проблема с ActiveWorkbook.Close = False. Ругается-говорит Expected function or variable.
Изменено: Алексей - 15.04.2014 17:19:02
Макрос сохранения файла и последующим разрывом связей и чисткой от макросов., Всплывает ошибка.
 
vikttur, учту. Изначально так и оформлял, но когда изменил текст условия-слетел весь код.
Макрос сохранения файла и последующим разрывом связей и чисткой от макросов., Всплывает ошибка.
 
1.Как я уже писал, в таком случае теряются связи в рабочем файле. В этом и проблема.
2.Как ни странно помогло в решении первой проблемы. Теперь запрос на изменение связей не появляется.=) Однако сообщение об ошибке все равно появляется.
Макрос сохранения файла и последующим разрывом связей и чисткой от макросов., Всплывает ошибка.
 
Добрый день.
В ходе работы озадачился созданием макроса, который будет сохранять копию рабочего файла с заданным именем из ячейки, без связей и без макросов, а так же скрыв определенный лист.
Все бы хорошо, да есить несколько проблем:
1. После сохранения файла в нужную директорию, слудеющий шаг-открытие файла и разрыв связей. Тут при открытии файл просит изменить связи. Логично предположить, что разрыв должен происходить до открытия, но в таком случае связи разрываются и в рабочем файле. С моими пока еще скудными знаниями ВБА решить этот момент не получается.
2. На выходе получаем файл удовлетворяющий условиям, но при открытии файла появляется сообщение:"Действительный формат открываемого файла отличается от указываемого его расширением имени файла... " .
Буду очень признателен,если подскажете как можно решить данные проблемы.

Вот мое творение:
Код
Sub Сохранение()
 Dim x As String
 strPath = "C:\Users\AVL\Desktop\Копилка"
 On Error Resume Next
 x = GetAttr(strPath) And 0
 If Err = 0 Then
   FileNameXls = strPath & "\" & "Сопоставимые АЗС" & " " & Sheets("Свод").Range("E2").Value & ".xls"
   ActiveWorkbook.SaveCopyAs Filename:=FileNameXls
  Else
   MsgBox "Папка " & strPath & " недоступна или не существует!", vbCritical
  End If
  Workbooks.Open (strPath & "\" & "Сопоставимые АЗС" & " " & Sheets("Свод").Range("E2").Value & ".xls")
    Dim iLinks As Variant, i&
    iLinks = ActiveWorkbook.LinkSources(xlExcelLinks)
    If Not IsEmpty(iLinks) Then
    For i = 1 To UBound(iLinks)
     ActiveWorkbook.BreakLink Name:=iLinks(i), Type:=xlExcelLinks
    Next i
    End If
    Dim oVBComponent As Object, lCountLines As Long
    If ActiveWorkbook.VBProject.Protection = 1 Then
      MsgBox "VBProject выбранной книги защищён." & vbCrLf & _
       "     Компоненты не будут удалены.", vbExclamation, "Отмена выполнения"
      Exit Sub
     End If
     For Each oVBComponent In ActiveWorkbook.VBProject.VBComponents
     On Error Resume Next
     With oVBComponent
      Select Case .Type
      Case 1
          .Collection.Remove oVBComponent
      Case 2    '
          .Collection.Remove oVBComponent
      Case 3
          .Collection.Remove oVBComponent
      Case 100
           lCountLines = .CodeModule.CountOfLines
           .CodeModule.DeleteLines 1, lCountLines
      End Select
      End With
     Next
     Set oVBComponent = Nothing
    ActiveWorkbook.Sheets("Свод").Visible = False
    ActiveWorkbook.Close = False
End Sub
Изменено: Алексей - 15.04.2014 17:26:30
Суммирование значений из диапазона листов
 
Nic70y, отлично работает! Спасибо! Сейчас буду разбираться в ходе Ваших вычислений.)
Страницы: 1 2 След.
Наверх