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

Страницы: 1
Фильтр по нескольким значениям, Фильтр по нескольким значениям из разных ячеек разных столбцов
 
Добрый день,
Вопрос.
Есть таблица с большим количеством столбцов 20+ и строк 1000+.
Пользователь выделяет в некоторых столбцах одну ячейку по значению из которой нужно установить фильтр.
Далее вызывается макрос, который фильтрует каждый столбец в котором есть выделенная ячейка, столбец фильтруется в соответствии со значением выделенной ячейки в этом столбце.

Может кто подскажет как сразу для нескольких столбцов можно сделать макрос?

Пока удалось только для одного столбца сделать:
Код
Sub Otbor()

' отбор текущего параметра
    curr_row = ActiveCell.Row
    curr_col = ActiveCell.Column
    curr_last = ActiveCell.SpecialCells(xlLastCell).Row
    Set ns = ActiveSheet
    
    Cells(curr_row, curr_col).Select
            name_str = Cells(curr_row, curr_col).Value
            If IsError(name_str) Then
                If name_str = CVErr(xlErrNA) Then name_str = ""
                    If ActiveCell.Text Like "[#]*" Then
                        ' Фильтр на ошибки
                        Select Case ActiveCell.Text
                            Case "#ДЕЛ/0!"
                                Selection.AutoFilter Field:=curr_col, Criteria1:="#ДЕЛ/0!"
                                Exit Sub
                            Case "#Н/Д"
                                Selection.AutoFilter Field:=curr_col, Criteria1:="#Н/Д"
                                Exit Sub
                            Case "#ИМЯ?"
                                Selection.AutoFilter Field:=curr_col, Criteria1:="#ИМЯ?"
                                Exit Sub
                            Case "#Имя!"
                                Selection.AutoFilter Field:=curr_col, Criteria1:="#Имя!"
                                Exit Sub
                            Case "#ЧИСЛО!"
                                Selection.AutoFilter Field:=curr_col, Criteria1:="#ЧИСЛО!"
                                Exit Sub
                            Case "#ССЫЛКА!"
                                Selection.AutoFilter Field:=curr_col, Criteria1:="#ССЫЛКА!"
                                Exit Sub
                            Case "#ЗНАЧ!"
                                Selection.AutoFilter Field:=curr_col, Criteria1:="#ЗНАЧ!"
                                Exit Sub
                        End Select
                    End If
            End If
                If name_str <> "" Then
                            If IsDate(name_str) Then
                                d1 = Trim(str(Day(name_str)))
                                If Len(d1) = 1 Then
                                    d1 = "0" + d1
                                End If
                                m1 = Trim(str(Month(name_str)))
                                If Len(m1) = 1 Then
                                   m1 = "0" + m1
                                End If
                                y1 = Trim(str(Year(name_str)))
                                If Len(y1) = 1 Then
                                    y1 = "0" + y1
                                End If
                                cr1 = "=" + y1 + m1 + d1
                                Cells(curr_row, curr_col).Select
                                Selection.AutoFilter Field:=curr_col, Criteria1:=cr1
                            Else
                                    Criteria1_ST = Cells(curr_row, curr_col).Value
                                    If IsNumeric(Selection.Value) Then
                                        cr1 = Trim("=") + Trim(str(Criteria1_ST))
                                        Selection.AutoFilter Field:=curr_col, Criteria1:=cr1
                                    Else
                                        Selection.AutoFilter Field:=curr_col, Criteria1:="=" + LTrim(Criteria1_ST), Operator:=xlAnd
                                    End If
                            End If
                Else
                            Selection.AutoFilter Field:=curr_col, Criteria1:="="
                End If
    Cells(curr_row, curr_col).Select
End Sub
Синтаксический разбор формулы Excel, разобрать на элементы сложную формулу в ячейке Excel
 
testuser, МатросНаЗебре, спасибо. Оба варианта огонь!

Сюда добавил ёЁ, иначе функции с буквой Ё обрезает...

RE.Pattern = "[ёЁа-яА-Яa-zA-Z]+(\d|_)*(?=\()|[\+\-\*\/\^]"
Изменено: RDT - 24.10.2024 19:02:11 (уточнения)
Синтаксический разбор формулы Excel, разобрать на элементы сложную формулу в ячейке Excel
 
 Есть такая формула в ячейке:
=ГИПЕРССЫЛКА(СЦЕПИТЬ("#";(АДРЕС(1+СТРОКА()+СЧЁТЕСЛИ(ДВССЫЛ(АДРЕС(СТРОКА()+1;СТОЛБЕЦ())):ДВССЫЛ(АДРЕС(СТРОКА($1394:$1394);СТОЛБЕЦ()));
СЦЕПИТЬ(ТЕКСТ(ГОД($K24);"0000");ТЕКСТ(МЕСЯЦ($K24);"00");ТЕКСТ(ДЕНЬ($K24);"00")));СТОЛБЕЦ()));":";
(АДРЕС(1+СТРОКА()+СЧЁТЕСЛИ(ДВССЫЛ(АДРЕС(СТРОКА()+1;СТОЛБЕЦ())):ДВССЫЛ(АДРЕС(СТРОКА($1394:$1394);СТОЛБЕЦ()));
СЦЕПИТЬ(ТЕКСТ(ГОД($K24);"0000");ТЕКСТ(МЕСЯЦ($K24);"00");ТЕКСТ(ДЕНЬ($K24);"00")));2^14)));
СЦЕПИТЬ(ТЕКСТ(ГОД($K24);"0000");ТЕКСТ(МЕСЯЦ($K24);"00");ТЕКСТ(ДЕНЬ($K24);"00")))
Нужно посчитать сколько в ней используется функций и простых операций сложения, деления, вычитаний, умножения, степени и т.п.
Видимо нужно создать динамический список/справочник из функций.

Посчитать количество известной функции получилось так:
Код
Sub CountFunctionName()
   Dim sFormulaName As String, CFN As Integer, i As Integer
   Dim sFunctionName As String
   
   sFunctionName = "COLUMN" '"СТОЛБЕЦ"
   sFormulaName = ActiveCell.Formula
   CFN = 0
   For i = 1 To Len(sFormulaName)
        If Mid(sFormulaName, i, Len(sFunctionName)) = sFunctionName Then CFN = CFN + 1
   Next i
   If CNF > 0 Then CNF = CNF + 1
   MsgBox "В этой ячейке количество функций " & sFunctionName & ": " & CFN
End Sub

А вот создать список/справочник всех функций чё-то не выходит. Названия функций могут быть разные...
Может есть у кого вариант решения?
Изменено: RDT - 24.10.2024 11:40:36 (неточности)
Как изменить высоту ячейки, используя функцию VBA?", Функция изменения размера высоты текущей ячейки исходя из значения другой ячейки
 
Цитата
написал:
Ваше сообщение удалил.
Какой смысл всё удалять? Удалили бы код.. Как что ни напишу вам прям не угодишь...
Как изменить высоту ячейки, используя функцию VBA?", Функция изменения размера высоты текущей ячейки исходя из значения другой ячейки
 
Краткое название задачи: "Как изменить высоту ячейки, используя функцию VBA?"
Как изменить высоту ячейки, используя функцию VBA?", Функция изменения размера высоты текущей ячейки исходя из значения другой ячейки
 
Добрый день.
Коллеги подскажите, возможно ли функцией VBA в excel менять высоту ячейки в зависимости от значения соседней ячейки?
У меня есть столбец каких-то значений:
100
300
200
250
170
Нужно чтобы высота соответствующих строк была также равна: 100, 300, 200, 250, 170
Что-то типа этого:
Код
Function SizeCell(CurrCell)
    ActiveCell.RowHeight = CurrCell
End Function
Изменено: Юрий М - 17.04.2023 19:12:25
Получение производителя и наименования по GTIN коду, Как получить с сайта информацию из штрих кода?
 
Добрый день!

В экселе имеется список штрих-кодов (275 шт).
Есть сайт https://gepir.gs1ru.org/GEPIR40/index.jsp?p=gtin&lng=ru где можно узнать информацию о товаре и изготовителе/поставщике товара.

Можно ли средствами экселя выгрузить в таблицу с этого сайта название товара и название изготовителя/поставщика?
Может кто посоветует ещё какой сайт где можно найти такую инфо?
Изменено: Юрий М - 23.01.2023 13:21:58
WhatsApp и Excel, Передача сообщений из Excel в WhatsApp
 
Вроде получилось...

Добавил строку:
   Message = Replace(Message, "%5", "%25" + "5")

Т.е., где WhatsApp сам проставляет квадратные скобки вместо %5B, нужно заменить знак "%" на его код "%25", а чтоб "%" менялся только в нужном месте - меняю "%5" на "%25" + "5"
   
   u_1 = """https://api.whatsapp.com/send?phone=+7&quot; + Phone + "&text=" + Message + """ 'Переходим по ссылке"
       With CreateObject("Wscript.Shell")
           .Run u_1
       End With

Теперь в ватсап ссылка передаётся в нужном виде:
    https://yandex.ru/navi/?whatshere%5Bpoint%5D=37.485511,55.499761&whatshere%5Bzoom%5D=18&from=navi
%5B и %5D - не превращаются в квадратные скобки.

Всем спасибо!
WhatsApp и Excel, Передача сообщений из Excel в WhatsApp
 
макросом VBA эксель
WhatsApp и Excel, Передача сообщений из Excel в WhatsApp
 
Добрый день друзья!

Отправляю из екселя сообщение в ватсап, примерно так:

u_1 = "https://api.whatsapp.com/send?phone=+7&amp;quot; + Phone + "&text=" + Message
    With CreateObject("Shell.Application")
        .Run u_1
    End With

В переменную Message пишется строка:
https://yandex.ru/navi/?whatshere%5Bpoint%5D=37.307392%2C54.648092&whatshere%5Bzoom%5D=18&am...

А в ватсап приходит другой текст
https://yandex.ru/navi/?whatshere[point]=37.307392%2C54.648092&whatshere[zoom]=18&la...

Т.е.:
%5B меняется на [
%5D меняется на ]

Из-за этого, когда переходишь по ссылке в навигатор на смартфоне, координата не определяется (на компьютере всё норм), и нельзя проложить путь.

Как запретить замену "%5B" на "[" ?
Как открыть новую вкладку в браузере
 
Код
x = Shell("""C:\Tor Browser\Browser\firefox.exe""  -new-tab www.planetaexcel.ru", vbNormalNoFocus)
После выполнения этой строки, Tor выдаёт сообщение:
Tor browser is already running, but is not responding.
И предлагает варианты: перезапуск Tor или отмену операции.
После перезапуска открывается только новая ссылка на одной вкладке. На другой вкладке предлагается восстановить предыдущую сессию.
Возможно ли средствами VBA определить запущен Tor или нет, если запущен, то открыть новую вкладку без перезапуска Tor?
Как открыть новую вкладку в браузере
 
В таблице Excel имеется список ссылок на интернет ресурсы.
Пользователь выбирает ячейку и запускает браузер, например, так:
Код
Sub Command_Com_Tor()
    curr_row = ActiveCell.Row
    curr_col = ActiveCell.Column
    command_dos = Cells(ActiveCell.Row, ActiveCell.Column).Value
    x = Shell("""C:\Tor Browser\Browser\firefox.exe""" & """" & command_dos & """", vbNormalNoFocus)
End Sub
Требуется открыть новую ссылку на новой вкладке в уже запущенном браузере.
Вставка строки в таблицу, содержащую объединённые по вертикали ячейки
 
Решение пока не найдено.
Вставка строки в таблицу, содержащую объединённые по вертикали ячейки
 
Т.е. последовательность действий получается такой:
Код
        With ActiveCell
          r = .EntireRow.Address(ReferenceStyle:=xlR1C1)
          Application.Goto Reference:=.Address(ReferenceStyle:=xlR1C1) & "," & r
        End With
        Rows(r).Copy
        Rows(r).Insert Shift:=xlDown
        Application.CutCopyMode = False
но в этом случае возникает ошибка в строке:
Код
Row(r).Copy
из объединённых ячеек копировать инфо не нужно.
Нужно вставить строки в пределах объединённого диапазона (во вложенном примере C1:C5).
Вставка строки в таблицу, содержащую объединённые по вертикали ячейки
 
Добрый день!

Имеется таблица с объединёнными ячейками по вертикали. Требуется скопировать имеющуюся строку в эту таблицу.
Последовательность действий видится такой:
1. Выделить нужную строку, которая проходит через объединённые ячейки по вертикали.
2. Скопировать.
3. Вставить на одну строку выше.
4. Сбросить диапазон копирования.

Метод Select для 1-го пункта не подходит, поскольку выделяет не одну строку, а несколько - в количестве объединённых по вертикали ячеек.
Метод
Код
Application.Goto Reference:=ActiveCell.Address(ReferenceStyle:=xlR1C1) & "," & ActiveCell.EntireRow.Address(ReferenceStyle:=xlR1C1) 
выделяет нужную строку и ещё одну ненужную ячейку, при копировании которых Selection.Copy выдаёт ошибку "Данная команда неприменима для нескольких фрагментов.
Как быть?
[
Адрес копируемой ячейки, Требуется определить адрес ячейки, которая копируется
 
переменная rTwo наверное не нужна?
лист "можно спрятать" убрал, т.к. пользователь работает с разными файлами, где нужно что-то менять.

не знаю как код вставить, поэтому пишу так:
Option Explicit

Public qq
Public rOne As Range

Sub Запомнить()
   Set rOne = Selection
   Application.StatusBar = "Запомнил " & rOne.Cells(1).Text & " из " & rOne.Address
End Sub

Sub Обменять()
   qq = Selection.Value
   rOne.Copy Selection
   rOne.Value = qq
   Set rOne = Nothing
   Application.StatusBar = False
End Sub

Sub ЧтоТоСделать(control As IRibbonControl)
   If rOne Is Nothing Then
       Запомнить
   Else
       Обменять
   End If
End Sub

вроде работает, с одной кнопкой и без промежуточного листа... спс за идеи...
Адрес копируемой ячейки, Требуется определить адрес ячейки, которая копируется
 
решение, вроде как, приемлемо, спасибо.
т.е. на ленте должны быть две кнопки для вызова - Запомнить() и Обменять(). И главное чтобы Обменять() нужно сначала Запомнить().
Адрес копируемой ячейки, Требуется определить адрес ячейки, которая копируется
 
сам вопрос "зачем?" звучит как приговор - "подумай, может это вовсе и не нужно?"
Адрес копируемой ячейки, Требуется определить адрес ячейки, которая копируется
 
С мышью всё работает замечательно, каким может быть решение, если пользователь работает с клавиатурой?
При "обычном копировании":

пользователь выполняет CTRL-Ins, переходит в другую ячейку (в т.ч. другого листа) с клавиатуры, нажимает ENTER или CTRL-V.

Возможно ли реализовать процесс "копирование-обмен" либо обычное копирование заменить обменом, при этом режим копирование/обмен менять кнопкой на ленте:

пользователь выполняет CTRL-Ins, переходит в другую ячейку (в т.ч. другого листа) с клавиатуры, нажимает сочетание клавиш CTRL + "что-то" (вместо ENTER или CTRL-V)

и значения ячеек меняются?

Сопутствующий вопрос:
- возможно ли получить адрес копируемой ячейки, если курсор находится где-то в другом месте?
Адрес копируемой ячейки, Требуется определить адрес ячейки, которая копируется
 
Пока думал как ответить на вопрос "зачем?" появился ответ, спс.
Адрес копируемой ячейки, Требуется определить адрес ячейки, которая копируется
 
1. Пользователь выделил ячейку для копирования - Ctrl-Ins. Вокруг ячейки появилась рамка копирования.
2. Затем пользователь переставил курсор на другую ячейку (выделение копирования осталось, но активной стала другая ячейка).
3. Макросом требуется поменять значения между этими ячейками.
Страницы: 1
Наверх