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

Страницы: 1 2 3 След.
Не понятно, почему закрыли мою вчерашнюю тему., Название темы: Язык М. Задача номер 17.
 
Дмитрий(The_Prist) Щербаков,
Цитата
Дмитрий(The_Prist) Щербаков написал:
я-то вообще ничего не считаю, не моя забота

Видите, как вы сразу ретировались.. а вопрос был задан конкретный: считаете ли вы что АБВ осмысленнее чем 0033 ? Мы ведь здесь, вроде как, больше математики, чем писатели, и цифры нам должны быть не менее значимы, чем буквы ))
Не понятно, почему закрыли мою вчерашнюю тему., Название темы: Язык М. Задача номер 17.
 
Дмитрий(The_Prist) Щербаков,
Цитата
Дмитрий(The_Prist) Щербаков написал:
Удивительно, что еще по поводу Вашего ника не возникло вопросов

Вы что, правда считаете, что ник "БМВ" осмысленнее чем 0033 ?  а "АБВ" ?  а "абв" - они  тоже осмысленнее ?
Изменено: Консультант - 10.10.2024 16:17:42
Условное форматирование. Нарисовать диагональ ячейки.
 
Sanja,
Цитата
Sanja написал:
См.файл

Спасибо. Это даже лучше диагонали !
Изменено: Консультатнт - 10.10.2024 15:50:56
Условное форматирование. Нарисовать диагональ ячейки.
 
Sanja,
Цитата
Sanja написал:
не всегда хватает времени и терпения

Вообще-то это другим словом называется. Ну да ладно. Спасибо вам за уделенное внимание и терпение )
Условное форматирование. Нарисовать диагональ ячейки.
 
Sanja,
Цитата
Sanja написал:
"Можно только кодом"

Зачем же я сменил ник ?
Изменено: Корреспондент - 10.10.2024 15:29:42
Условное форматирование. Нарисовать диагональ ячейки.
 
Vik_tor,
Цитата
Vik_tor написал
Сначала выполните требование модератора.

Ник сменил.
Условное форматирование. Нарисовать диагональ ячейки.
 
Sanja, Sanja,
Цитата
Sanja написал:
мы вот, что-то совсем упустили из вида ваш Ник. Он нарушает Правила форума. Прошу изменить. Спасибо.

Простите, а вы можете объяснить чем ник 0033s хуже существующих: Ver123, Closing567 и тп ? Буквы должны предшествовать числам ? Букв должно быть не меньше 3. Первая буква должна быть прописной ? Есть четкое правило на этот счет ?
Изменено: 0033s - 10.10.2024 15:18:05
Условное форматирование. Нарисовать диагональ ячейки.
 
Vik_tor,
Цитата
Vik_tor написал:
можно только применить узор с косой штриховкой

а как ?
Условное форматирование. Нарисовать диагональ ячейки.
 
Добрый день!

Подскажите можно ли с помощью условного форматирования нарисовать диагональ ячейки.
Например, есть две таблицы одинакового размера, одна из которых заполнена числами 0 и 1. Надо чтобы во второй таблице ячейки, соответствующие цифре 1, оказались перечеркнуты.
Понятно, что это можно сделать с помощью кода. А можно ли формулами листа ?
Как сохранить адрес выделенной ячейки.
 
Hugo,
Цитата
Hugo написал:
Не поняли - сохранение файла нужно чтоб запомненное значение не забылось при выключении Экселя/компа.Ну а так при работе можно использовать как и глобальную переменную.

Весь вопрос, где взять данные, чтобы записать их в глобальную переменную или, как вы предлагаете, в свойства книги. Если их брать из прерывания SheetChange, то в моем случае оно вызывается ЧЕТЫРЕ раза, и только первый из четырех несет правильное значение. Но как узнать, что это первое, а не второе и тд ? Я пробовал для этого глобальную переменную логическую, но она запоминает свой предыдущий запуск и поэтому не подходит )

Ладно. Решение вроде у меня есть. Оно получается за один проход с циклом обновления, вызванного срезом. Работает четко.
Всем, кто помогал, спасибо!
Изменено: 0033s - 04.10.2024 21:27:56
Как сохранить адрес выделенной ячейки.
 
Hugo,
Цитата
Hugo написал:
Только нужно файл сохранить.

Этого хотелось бы избежать - никаких лишних движений. Объясню зачем мне это надо. Таблица очень длинная, и может оказаться, что пользователь захочет после обновления данных остаться ровно в том же месте, где был, когда решил воспользоваться срезом, а не оказаться опять на вершине таблицы, чтобы затем снова искать место, откуда его выбросило.
Изменено: 0033s - 04.10.2024 20:50:25
Как сохранить адрес выделенной ячейки.
 
В принципе я нашел решение. Использую прерывания на: (1) SheetChange, (2) PivotTableUpdate, (3) SelectionChange, создаю в каждом свою запись, которые складываю в список, а затем применяю PowerQuery, чтобы взять из списка то что надо. Но я подумал,вдруг есть какое то "детское" решение, которое я не вижу.
Как сохранить адрес выделенной ячейки.
 
БМВ,
Цитата
Hugo написал:
то всегда можно последний адрес выбранный в этом диапазоне сохранять в глобальной пересменной.

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

Если кратко: выделяем ячейку Х на таблице => меняем срез => смотрим адрес ячейки Х.

Замечание. Двойной клик на ячейке не считается хорошим решением.

Спасибо
Изменено: 0033s - 04.10.2024 19:59:11
Язык-М. Найти окно в таблице, с кратчайшем промежутком времени.
 
Если кому то из начинающих трудно разобраться в превосходно упакованном  решении, предложенном by sotnikov, предлагаю его упрощенный код, чтобы результат можно было смотреть по шагам:
Код
let d=Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
  L=List.Buffer(Table.ToList(d,(x)=>x),
  a=List.Transform(L,(x)=> List.Skip(L,(i)=>i{0}<>x{0})),
  b=List.Transform(a,(x)=>List.Distinct(x,(y)=>x{1})),
  с=List.Transform(b,(x)=>{x{0}{0},x{6}?{0}?,x{6}?{0}?-x{0}(0}}),
  s=List.Select(c,(x)=>x{1}<>null),
  t=#table({"start","end","td"},List.MinN(s,1,(x)=>x{2})
in t
Изменено: 0033s - 30.09.2024 19:18:45
Язык-М. Найти окно в таблице, с кратчайшем промежутком времени.
 
sotnikov,
Цитата
sotnikov написал:
В ущерб читаемости, но меньше 300 непробельных символов
Кстати выполняется быстрее прежнего. Совсем немного, но быстрее.
Не понятно, почему закрыли мою вчерашнюю тему., Название темы: Язык М. Задача номер 17.
 
Sanja,
Цитата
Sanja написал:
Какой СМЫСЛ отражает это название?

Значит я не разобрался в понятии "Название темы", так как считал, что подстрочник в названии также входит в понятие "Название". А в подстрочнике у меня  было написано: "Найти кратчайшее по времени окно в таблице".
Слова "Задача 17" использовались мной исключительно для того, чтобы быстро искать свою тему в длинном списке, который непрерывно скачет. Я считаю, что короткое название искать удобнее чем длинное не только мне, а и всем, кто заинтересовался темой.
Что касается использование мною слов записанных ЗАГЛАВНЫМИ буквами, то это делается для фиксации внимания на наиболее важных деталях для лучшего понимания смысла написанного. Мне это представляется важным. Хотя если кого то это раздражает, то я не смею настаивать. Кстати, если вы посмотрите как пишутся заголовки статей в американской газете The New York Times, то там все слова начинаются с заглавных букв. И всем это нравится.

Теперь я понял в чем состояла мое заблуждение и обещаю не повторять ошибки.
Изменено: 0033s - 29.09.2024 14:26:58
Язык-М. Найти окно в таблице, с кратчайшем промежутком времени.
 
sotnikov,
Цитата
sotnikov написал:
И еще можно чуть-чуть, если захотеть ))

Я бы поставил строку с буквой "d" на самый верх, чтобы они шли в алфавитном порядке. Либо заменил ее на, скажем, "h" .
Изменено: 0033s - 29.09.2024 13:01:48
Язык-М. Найти окно в таблице, с кратчайшем промежутком времени.
 
Sanja,
Цитата
Sanja написал:
Что об этом можете сказать?

Понятия не имею.
Язык-М. Найти окно в таблице, с кратчайшем промежутком времени.
 
Цитата
Sanja написал:
3.2. Использовать в сообщениях, подписях и логинах на форумах нецензурную лексику, текст с пЕреМеНнЫм регистром или бессмысленным набором символов, заменять буквы другими символами. ... Администрация вправе удалить такого пользователя без предупреждения.

Понял. Прошу дать шанс исправиться.
Язык-М. Найти окно в таблице, с кратчайшем промежутком времени.
 
Решение задачи получилось очень красивым.
Изменено: 0033s - 29.09.2024 21:10:42
Язык-М. Найти окно в таблице, с кратчайшем промежутком времени.
 
sotnikov,

Оказывается можно и быстрее и короче )
ПОЗДРАВЛЯЮ!
Изменено: 0033s - 28.09.2024 15:38:31
Язык-М. Найти окно в таблице, с кратчайшем промежутком времени.
 
Последний вариант. Воспользовался подсказками Артема. Время - 0.10 секунды. Вряд ли можно быстрее
Код
let
    s = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    t=List.Buffer(s[Время]),
    p=List.Buffer(s[Место]),
    f=(imin,imax)=> if imax=List.Count(p)-1 then {[a=imin,b=imax,d=1]} else
                    if List.Count(List.Distinct(List.Range(p,imin,imax-imin+1)))=7 
                    then {[a=imin,b=imax,d=t{imax}-t{imin}]} & @f(imin+1, imax)
                    else {[a=imin-1,b=imax+1,d=1]} & @f(imin, imax+1),
    a=f(1,0),
    tmin=List.Min(Table.FromRecords(a)[d]),
    out=List.Select(a,(x)=> x[d]=tmin),
    tab=Table.FromRecords(out)
in
  tab
Язык-М. Найти окно в таблице, с кратчайшем промежутком времени.
 
Мое решение

Код
let
    s = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    t=List.Buffer(s[Время]),
    p=List.Buffer(s[Место]),
    g=List.Generate(
        ()=> 7,
        (x)=> List.Count(List.Distinct(List.Range(p,0,x)))<7,
        (x)=>x+1
    ),
    istart=List.Last(g),
    g2=List.Generate(
        ()=> [imin=0,imax=istart],
        each [imax]<List.Count(p),
        each [
            imax=[imax]+1,
            g3=List.Generate(
                ()=> [imin]+1,
                (x)=> List.Count(List.Distinct(List.Range(p,x,imax-x)))=7,
                (x)=> x+1),
            imin=if List.IsEmpty(g3) then [imin] else List.Last(g3)-1
        ], each [imin=[imin]+1, imax=[imax]-1,dt=t{[imax]-1}-t{[imin]+1}]),
        tmin=List.Min(Table.FromRecords(g2)[dt]),
        out=List.Select(g2,(x)=> x[dt]=tmin),
        tab=Table.FromRecords(out)
in
   tab
Язык-М. Найти окно в таблице, с кратчайшем промежутком времени.
 
0033s,
Цитата
написал:
Но я не догадался использовать List.Distinct , как у вас. С ним решение должно быть быстрее. Попробую.
У меня получилось 0.14 сек по сравнению с моими прежними 0.27 и с 0.17 у Артема. Не очень значительное ускорение. Код выложу позже, если Артем не приведет обновленного решения. Пока еще не умею писать так лаконично как он. У меня целых 3 раза  используется List.Generate.
Изменено: 0033s - 28.09.2024 09:18:31
Не понятно, почему закрыли мою вчерашнюю тему., Название темы: Язык М. Задача номер 17.
 
Ладно, я все понял. Слова "Задача 17" подействовали как красная тряпка, хотя в подстрочнике я задачу все таки сформулировал.
Впредь буду выбирать название внимательнее.
Язык-М. Найти окно в таблице, с кратчайшем промежутком времени.
 
Михаил Л,
Цитата
написал:
Что касаемо моей темы, то я оставил(Задача №17) как ориентир, чтобы  0033s  не пролистал мимо и заметил тему.
И за это вам огромное спасибо.
Не понятно, почему закрыли мою вчерашнюю тему., Название темы: Язык М. Задача номер 17.
 
Читал
Язык-М. Найти окно в таблице, с кратчайшем промежутком времени.
 
Artem_1990,
Цитата
написал:
решение мне самому не нравиться, думаю можно ускорить...
Мне кажется ускорить можно за счет "тонкой" подгонки верхней границы окна. Именно этот подход я использовал в своем решении. У меня нижняя граница спускалась на один шаг, а верхняя - на столько сколько требуется , чтобы удовлетворить условию "в окне должны быть все числа". Время моего решения - 0.27 сек. Но я не догадался использовать List.Distinct , как у вас. С ним решение должно быть быстрее. Попробую.
Изменено: 0033s - 27.09.2024 21:02:51
Язык-М. Найти окно в таблице, с кратчайшем промежутком времени.
 
Artem_1990,
Спасибо! Решение замечательное.
Страницы: 1 2 3 След.
Наверх