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

Страницы: 1 2 3 4 5 6 След.
Как сделать чтобы excel считал уникальные значения в столбце
 
И о уникальных . Поиск рулит..
Расчет НДС по разным ставкам
 
Когда дз/кз на конец месяца отрицательный, нужно брать 0. То есть замените на конец марта все  K4 -> МАКС(K4;0) и будет считать, наверное, как вы хотите.
Но я, вроде, вижу ошибку в логике - если, например, в феврале будет поставка  перекрывающая авансовый платеж и большой авансовый платеж за следующую поставку то посчитает не правильно. По моему. Не готов сейчас разбираться с учетом ндс и сумм при изменении ставки.  
Изменено: Sergey Stoyanov - 25.09.2025 12:48:42
Расчет стоимости по индикатору (нужен/не нужен) и на условиях
 
Ерунду написал, совершенно не вчитываясь в условие
Изменено: Sergey Stoyanov - 24.09.2025 17:32:54
сверка оплат покупателей со Сбером по эквайрингу
 
Не совсем осознал условие, но как понял, вроде это нужно. Сравнить текущую сумму и дату(что в сбере есть даты от текущей до 2-х мин вперед)
+2/1440 = 2/24часа/60мин - это как раз +2 минуты для эксель
=ЕСЛИ(СЧЁТЕСЛИМН(Таблица3[Сумма операции];Заказы!J4; Таблица3[Дата операции];">"&Заказы!C4); Таблица3[Дата операции];"<"&(Заказы!C4+2/1440);"+"; ЕСЛИ(K4="наличные";K4;"Нет в Сбере"))


Дубли телефонов разного формата в разных графах., Найти повторяющиеся значения в массиве данных.
 
Формулы не подскажу, но если цель облегчить жизнь и подсветить телефоны которые уже есть в базе, чтобы не вносить их , я бы действовал так
1. все в формат числовой без десятичных знаков
2. разнес то что в базе по разделителю ,
3. везде  через замену(ctrl+h) удалил все скобки, пробелы,  плюсы, точки, доб->д
4. условное форматирование с подсветкой дублей по всей таблице .
5. отфильтровать не помеченное дублями по цвету в первом столбце(в новых) и объединил новое с тем что уже в "базе" через разделитель. Эту базу уже трудно испортить...

Можно еще пару столбцов к новым телефонам с формулами добавить, для дополнительного поиска дублей  - без первого знака и без первых 4-х знаков.
Формула для парсинга номера, Как изящно с использованием формул, но без VBA убрать из номера вида AУУ0001B незначащие нули?
 
с последней формулой в моем предыдущем сообщении я канеш поспешил, так правильно нужно было 4-й символ проверять.
=ЛЕВБ(A1;3)&ПСТР(A1;4;ПСТР(A1;4;1)<>"0")&--ПСТР(A1;5;4)
Но у _Boroda_ последнее сильно изящнее :)
Формула для парсинга номера, Как изящно с использованием формул, но без VBA убрать из номера вида AУУ0001B незначащие нули?
 
если впереди всегда 3/4 буквы не проще просто преобразовать в число с 4-ой позиции, а при ошибке с 5-ой?
=ЕСЛИОШИБКА(ЛЕВБ(A1;3)&(--ПСТР(A1;4;ДЛСТР(A1)-4));ЛЕВБ(A1;4)&(--ПСТР(A1;5;ДЛСТР(A1)-5)))

точнее достаточно 4-й символ проверять. =ЛЕВБ(A1;3)&ЕСЛИОШИБКА(--ПСТР(A1;4;1);ПСТР(A1;4;1))&(--ПСТР(A1;5;ДЛСТР(A1)-5))
Изменено: Sergey Stoyanov - 04.09.2025 17:30:39
Поиск категории товаров при совпадении двух параметров
 
Для 22-ой строки
=ЕСЛИОШИБКА(ПРОСМОТР(;-1/($E$2:$E21<>"")/($B$2:$B21=$B22)/($F$2:$F22=$F22);$E$2:$E21);ПРОСМОТР(;-1/($E24:ИНДЕКС(E:E;СЧЁТЗ(A:A)<>"")/($B24:ИНДЕКС(B:B;СЧЁТЗ(A:A)+1)=$B22/($F24:ИНДЕКС(F:F;СЧЁТЗ(A:A)+1)=$F22;$E24:ИНДЕКС(E:E;СЧЁТЗ(A:A)+1))))))
Ошибка 91 "Object variable or With block variable not set", Возникает при явно определенных переменных
 
А если дублирующие ссылки на таблицу убрать - не поможет? With Wsh.ListObjects(1)
Как формулой вытащить первые два символа из времени
 
--ТЕКСТ(A2;"ЧЧ") ?
копирование формул
 
Сколько таких таблиц? Проще руками эти 3 ссылки перетащить, формулы тормозить начнут. Но хозяин барин, вот монстрик
=ЗНАК((L5>=ПРОСМОТР(1;$I$1:$I6;$L$1:$L11)*ПРОСМОТР(1;$I$1:$I6))+(M5>=ПРОСМОТР(1;$I$1:$I6;$M$1:$M11)*ПРОСМОТР(1;$I$1:$I6)))

здесь просмотр ищет от текущей позиции вверх первый коэф. меньше равно 1.  если коэф может больше, ну замените 1 на 9E+307. Предполагаю, что других чисел  в столбце i  нет. Знак заменяет если, эт я поизвращался :)  
Изменено: Sergey Stoyanov - 29.08.2025 16:19:00
Сумма за выбранный период + доп.параметры, Прошу помочь с формулой
 
Интересный фокус, пока до конца не уверен, что разобрался. Смещение создает массив столбцов с каждым из которых работают условия по первым столбцам? С датами да, не сообразил, что там никакого поиска позиции не нужно, просто вычесть первую. Давненько я формулы не составлял.
Изменено: Sergey Stoyanov - 25.07.2025 17:19:40
Сумма за выбранный период + доп.параметры, Прошу помочь с формулой
 
Можно еще так. =СУММ(ИНДЕКС($C$2:$Q$2;;ПОИСКПОЗ($U$6;$C$1:$Q$1)):ИНДЕКС($C:$Q;СЧЁТЗ(A:A);ПОИСКПОЗ($U$7;$C$1:$Q$1))*СЧЁТЕСЛИМН(U3;A2:ИНДЕКС($A:$A;СЧЁТЗ(A:A));U4;B2:ИНДЕКС($B:$B;СЧЁТЗ(A:A))))

А если СЧЁТЗ(A:A) вынести в отдельную ячейку, то и покороче и чуток быстрее будет  
Поиск низкой цены, Сравнение и поиск самой низкой цены
 
Вы бы разобрались как к полям сводной таблицы обращение идет. У вас после обновления Поставщик1 есть? Но, здесь можно и на простые ссылки поменять = S$13/ИНДЕКС($B$33:$O$33;;ПОИСКПОЗ(S$11;$A$8:$N$8&2;0))
Подсчёт кол-ва покупателей через СЧЁТЕСЛИМН
 
Поздновато прочитал, но стало любопытно, сильно наворотили. Вроде как условие про 2 квартала уже содержит  условие больше 2-х месяцев. Я бы спрятал где нить "ложь", скажем в ячейке R1 и записал =СУММ(СЧЁТЕСЛИМН(R1;НЕ(G11:G382+F11:F382+E11:E382);R1;НЕ(D11:D382+C11:C382+B11:B382)))
power query развернуть каталог вида: category, id, parentId в отдельные столбцы с подкатегориями, xml файл со списком родительских и вложенных категорий в одном столбце связанных по id/parentid разнести по столбцам по вложенности
 
Посмотрел, что в образце исходника оставил... Ну, в общем понятно, структура столбцов в полном фиде другая. A функция вызывается по индексу столбца,  а не по имени. в общем к другому столбцу привязывался вместо  categoryId.  С самой функцией пока не разбирался, но ошибку уже исправил :). Спасибо!
power query развернуть каталог вида: category, id, parentId в отдельные столбцы с подкатегориями, xml файл со списком родительских и вложенных категорий в одном столбце связанных по id/parentid разнести по столбцам по вложенности
 
Ну, товары то я обрезал в xml,  там больше полумиллиона строк. А у себя на полном запустил, это нужно в xml эти id оставить. Cейчас опят занят, чуть позже попробую оставить в xml с ошибкой. cat id 215. И, по моему один уровень категорий выпал. 4 получалось, а здесь 3. Но, гораздо шустрее  отработало, чем мое собственное творчество. Нужно мне с функцией разобраться, там допилю, надеюсь..  
power query развернуть каталог вида: category, id, parentId в отдельные столбцы с подкатегориями, xml файл со списком родительских и вложенных категорий в одном столбце связанных по id/parentid разнести по столбцам по вложенности
 
Спасибо. Разберусь, как работает, возможно интересно.  А для понимания как PQ обрабатывать так и вовсе отлично, на конкретном примере.
Но, пока результат явно не тот, что ожидался  - веб камера в детские товары попала, а мышь в "спорт и отдых"...
power query развернуть каталог вида: category, id, parentId в отдельные столбцы с подкатегориями, xml файл со списком родительских и вложенных категорий в одном столбце связанных по id/parentid разнести по столбцам по вложенности
 
Разобрался вроде. Трансформация работает как нужно. Это, когда я пытаюсь посмотреть итог,  Table.FromRecords  на основе первой записи обрезает остальные столбцы. А вот как выводить все, что-то пока не понятно..  
power query развернуть каталог вида: category, id, parentId в отдельные столбцы с подкатегориями, xml файл со списком родительских и вложенных категорий в одном столбце связанных по id/parentid разнести по столбцам по вложенности
 
Может и к лучшему, что никто не ответил, времени заниматься не было совершенно, работает и ладно. В фильтрации конечно ошибся, но в данном наборе не принципиально, и без нее работает. Но, как время появилось, решил немного поразбираться с PQ , написал функцию  для разворачивания дерева  по списку записей(таблицу с добавлением индекса  - в записи). функция с рекурсией
Код
    indx = Table.AddIndexColumn(table0, "Indx", 0, 1),
    id_list = List.Buffer( indx[id] ),
    recs = List.Buffer(Table.ToRecords(indx)),    
fn = (rec, spot, i) => 
    [new_spot = List.PositionOf( id_list, recs{spot}[parentId]),
    new_rec = Record.AddField(rec, "Tree"& Text.From(i), (try recs{new_spot} otherwise rec)[Tree]),
    new_i = List.Accumulate({i}, 1, (state, current) => state + current) ,
    result = if new_spot = -1 then new_rec else @fn(new_rec, new_spot, new_i)]
[result],
Однако, может кто-нибудь объяснить, почему в конструкции с добавлением столбца рекурсия прекрасно работает и результат в записях верный, со всеми новыми записями(столбцами) подкатегорий,
Код
recstree = Table.AddColumn( indx, "parentTree", (x) => fn(x, x[Indx], 0 )),
а, если пытаюсь вместо добавления столбца, просто трансформировать список записей, рекурсия не срабатывает и добавляется только одно поле?
Код
 recstree = List.Transform( recs, (x) => fn(x, x[Indx], 0 ))
Изменено: Sergey Stoyanov - 12.07.2024 10:54:00
power query развернуть каталог вида: category, id, parentId в отдельные столбцы с подкатегориями, xml файл со списком родительских и вложенных категорий в одном столбце связанных по id/parentid разнести по столбцам по вложенности
 
Доброго дня,
Возникла задача пересобрать получаемые из интернета данные в виде XML в читаемую таблицу.  В xml 2 таблицы - в одной дерево каталога в виде названия,id, и родительского id, во второй товары  c id категории.  В итоге хочется получить таблицу с товарами и столбцами всех подкатегорий. Т.е нужно развернуть список категорий c id/parent id в отдельные столбцы и добавить к товару.  Возникла мысль о Power Query. Но, так как я с PQ практически не сталкиваюсь и особо его не знаю, решать пришлось в лоб, через объединение. А потом еще сдвигать короткие цепочки. Да и число подкатегорий экспериментально только получил.  Решение как бы есть, но мне не особо нравиться.  Может что-нибудь более изящное кто предложит? А то самому знаний/опыта не хватает. Заодно и поучиться. Подобных задач что-то не нашел, может формулирую не правильно.
Мое решение ниже и в приложенном файле. Пример xml обрезал по товарам до приемлемого и сохранил в текстовом, В оригинале в источнике ссылка api
Код
let
    Источник = Xml.Tables(File.Contents("C:\...\sampleFeed.txt")){0}[shop],
    category = Источник{0}[categories]{0}[category],
    headrename = Table.RenameColumns(category,{{"Element:Text", "Tree"}, {"Attribute:id", "id"}, {"Attribute:parentId", "parentId"}}),
    listforfilter = List.Buffer(headrename[parentId]),
    tree_last = Table.SelectRows(headrename, each ([id] <> listforfilter)),
    joinL1 = Table.NestedJoin(tree_last,{"parentId"},headrename,{"id"},"t1",JoinKind.LeftOuter),
    #"treelast-1" = Table.ExpandTableColumn(joinL1, "t1", {"Tree", "parentId"}, {"t1.Tree", "t1.parentId"}),
    joinL2 = Table.NestedJoin(#"treelast-1",{"t1.parentId"},headrename,{"id"},"t1",JoinKind.LeftOuter),
    #"treelast-2" = Table.ExpandTableColumn(joinL2, "t1", {"Tree", "parentId"}, {"t1.Tree.1", "t1.parentId.1"}),
    joinL3 = Table.NestedJoin(#"treelast-2",{"t1.parentId.1"},headrename,{"id"},"t1",JoinKind.LeftOuter),
    #"treelast-3" = Table.ExpandTableColumn(joinL3, "t1", {"Tree"}, {"t1.Tree.2"}),
    recs_temp = Table.ToRecords(Table.ReorderColumns(#"treelast-3",{"t1.Tree.2", "t1.Tree.1", "t1.Tree", "Tree", "id", "parentId", "t1.parentId", "t1.parentId.1"})),
    recs_tree = List.Transform(recs_temp, each 
        if _[t1.Tree]=null then _&[t1.Tree.2=_[Tree], Tree = null] 
        else 
            if _[t1.Tree.1]=null then _&[t1.Tree.2=_[t1.Tree], t1.Tree.1=_[Tree], t1.Tree=null, Tree = null] 
            else 
                if _[t1.Tree.2]=null then _&[t1.Tree.2=_[t1.Tree.1], t1.Tree.1=_[t1.Tree], t1.Tree=_[Tree], Tree = null] 
                else _),
    table_tree = Table.FromRecords(recs_tree),
    offer = Источник{0}[offers]{0}[offer],
    join_offer_tree = Table.NestedJoin(offer,{"categoryId"},table_tree,{"id"},"temp",JoinKind.LeftOuter),
    result = Table.ExpandTableColumn(join_offer_tree, "temp", {"t1.Tree.2", "t1.Tree.1", "t1.Tree", "Tree"}, {"temp.t1.Tree.2", "temp.t1.Tree.1", "temp.t1.Tree", "temp.Tree"})
in
    result
Изменено: Sergey Stoyanov - 21.06.2024 16:34:00
Как рассчитать процент отклонения положительного от отрицательного значения
 
Под вечер с трудом  воспринимаю. А если табличку с условиями для начала сделать? Потом условия то формулами не проблема прописать. Например так, только в корректности не уверен, чет голова плохо варит.
план   положительный, факт положительный ф/п
план   положительный, факт отрицательный -ф/п-100%-ф/п-1
план   отрицательный, факт положительный(ф-п)/-п1-ф/п
план   отрицательный, факт отрицательный, но >= 2 планов ф/п
план   отрицательный, факт отрицательный, меньше 2 планов (ф-2п)/-п-100%1-ф/п
Объединенные ячейки в формуле с массивом
 
Использование ПРОСМОТР интересное, взял на заметку, не приходило в голову. Но, для меня, например,  там нюанс не в делении на 0, это почти стандартное использование просмотра.  А вот массив для поиска, в сочетании с делением,.дающий заполнение пустых... В конкретном случае - от 1 до 6 ти  находит 1, дальше 7, потому как ищет в массиве   1, игнор(ошибка), игнор...., 7, игнор, игнор и т.д. . . Если раньше Просмотр с делением на 0 не использовали, F9, по моему,  не сильно поможет разобраться.  
Извлечение числа из текста с определенным словом
 
Тему я как то так вижу здесь: Извлечение числа из текста в ячейке с фиксированной длинной текста.  
Извлечение числа из текста с определенным словом
 
Если в конце всегда кубометры и кг, то бишь 2 и 3 символа после пробела, я бы как то так сделал.
=ЕСЛИ((ЛЕВБ(A2;5)="Объем")+ (ЛЕВБ(A2;5)="Масса");--ЗАМЕНИТЬ(ЛЕВСИМВ(A2;ДЛСТР(A2)-3);1;6;);"")
Изменено: Sergey Stoyanov - 13.02.2024 10:30:44
Как вывести n-ое количество символа по формуле?
 
https://support.microsoft.com/ru-ru/office/%D0%BF%D0%BE%D0%B2%D1%82%D0%BE%D1%80-%D1%84%D1%83%D0%BD%D...
Найти значение в диапазоне, Найти значение в диапазоне
 
Вроде так работает
=ЕСЛИ(ИНДЕКС(Таблица1[До];ПОИСКПОЗ(Таблица2[[#Эта строка];[Номер]];Таблица1[От]))<Таблица2[[#Эта строка];[Номер]];"Нет такого";ИНДЕКС(Таблица1[Номерклатура];ПОИСКПОЗ(Таблица2[[#Эта строка];[Номер]];Таблица1[От])))
я бы кусочек формулы поименовал =ПОИСКПОЗ(Таблица2[[#Эта строка];[Номер]];Таблица1[От]) . В файле сделал пример.
Соединить данные 2 столбцов
 
Я вот этим пользуюсь, с этого же форума. Выделяете ваши телефоны и запускаете это макрос.  Лишние переводы строки дадут пустые  строки, нужно бы добавить удаление. Или проверку  - пропускать разделители идущие подряд. Но пишу я крайне медленно, а потому не буду заморачиваться:).  В принципе, можно и без макроса,  с помощью фильтра потом пустые удалить.
Код
Sub TextOnRowsInRange()
  'Автор: webley
'Редактор: JayBhagavan
'Сайт: http://planetaexcel.ru/forum/index.php?PAGE_NAME=read&amp;FID=1&amp;TID=64813&amp;TITLE_...
  
Dim cl As Range, rng As Range, rngTmp As Range
Dim strDelim$, strTmp$
Dim arr() As String
Dim i&, n&, j&, k&

   Application.ScreenUpdating = False 
    'strDelim = InputBox("Введите символ-разделитель")
    'If strDelim = "перенос" Then strDelim = Chr(10)
    ' If strDelim = "" Then End
    strDelim = Chr(10)
    ' strDelim = " "
       
    If TypeName(Selection) = "Range" Then
        Set rng = Selection
        n = rng.Rows.Count
        For i = n To 1 Step -1
            With rng(i, 1)
                strTmp = .Value & strDelim
                arr = Split(strTmp, strDelim)
                j = UBound(arr, 1) - 1
                If j > 0 Then
                    .EntireRow.Copy
                    .Offset(1).Resize(j).EntireRow.Insert shift:=xlDown ', CopyOrigin:=xlFormatFromLeftOrAbove

                    Set rngTmp = .Resize(j + 1)
                    For k = 0 To j
                        rngTmp(k + 1, 1).Value = arr(k)
                    Next k
                End If
            End With
        Next i
    End If
   Application.ScreenUpdating = True
End Sub

Формула, заменяющая сводную
 
tbl - это имя умной таблицы. По примеру AlienSx преобразовал вашу исходную.  Это не принципиально, просто нагляднее где условие проверяется. Можно вместо tbl[***] задать соответствующие диапазоны из нужных столбцов.
Ложь - потому, что в этом году по выбранной статье присутствуют все 3 бизнеса. У вас условие обратное. Оно выполняется только в  2015-м для   последней статьи- там стоит "Истина". Если хотите наоборот, вместо =0, напишите >0. Если нужно что -то другое писать,  - ну тогда подобная конструкция = если(счетеслимн* счетеслимн*счетеслимн; "текст если 3 бизнеса";"текст если меньше 3-х")
Формула, заменяющая сводную
 
Ну, наверное, условие наличия статьи в году  по каждому из бизнесов нужно перемножить. Если какого то не будет, результат получится 0...
как то так
=СЧЁТЕСЛИМН(tbl[Статья];$J14;tbl[Год]; K$13;tbl[Бизнес];"m")*СЧЁТЕСЛИМН(tbl[Статья];$J14;tbl[Год]; K$13;tbl[Бизнес];"f")*СЧЁТЕСЛИМН(tbl[Статья];$J14;tbl[Год]; K$13;tbl[Бизнес];"r")=0
Страницы: 1 2 3 4 5 6 След.
Наверх