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

Страницы: 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
 
 Есть такая формула в ячейке:
=ГИПЕРССЫЛКА(СЦЕПИТЬ("#";(АДРЕС(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 в 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
 
Добрый день друзья!

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

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" на "[" ?
Как открыть новую вкладку в браузере
 
В таблице 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
Требуется открыть новую ссылку на новой вкладке в уже запущенном браузере.
Вставка строки в таблицу, содержащую объединённые по вертикали ячейки
 
Добрый день!

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

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