powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Пытаюсь сделать Эксель умнее, чем он есть?
14 сообщений из 39, страница 2 из 2
Пытаюсь сделать Эксель умнее, чем он есть?
    #34256975
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир СанычЮзер дает корень и еще некоторые вещи в определенных ячейках. При изменении значения одной из ячеек функция запускается сама и выдает слово (и комментарии, которые пока еще у меня не работают).Worksheet_Change с проверкой Target это то самое что тебе нужно. Функции листа - не нужны. Точно-точно, верь мне :)

Владимир СанычНо у меня два режима работы. В одном на листе всего одно слово, исходный материал для него и вычисленные комментарии. Второй режим - отладочный, в нем вычисляется много слов с разными исходными данными, и там комментарии выводить не нужно. Хотелось бы, чтобы одна функция могла работать в обоих режимах.Ну это уж совсем просто.
Разрежь свою большую функцию на три маленьких. Пусть одна маленькая (центральная) функция формирует очередной кусок слова и коментарий почему именно этот кусок слова использован. А две дополнительные функции будут ждать команды пользователя и выводить результаты, одна будет выводить результат с коментарием, вторая только результаты. И запускай их по отдельности.
...
Рейтинг: 0 / 0
Пытаюсь сделать Эксель умнее, чем он есть?
    #34256993
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабайвероятно вердихт таков будет: если максимальный размер области результата фиксирован,
то фикнция массива к етому делу может прикрутиться удачнее саба, инкапсулировав в себе всякого рода очистки. Если фиксированной области для результата не получается, то что-то бегом саб только видно пока.
Какой-то максимальный размер можно придумать, так что будем считать, что размер ограничен. Только я из топика по ссылке ничего не понял. Написать функцию, возвращающую массив, я и раньше умел. Но что с ней делать дальше? Я умею занести ее значение в массив и работать с ним как с массивом. Но как ее значение распихать по ячейкам?

бабайкнопка-педаль типа "вычислить вариантов" должна в твоей задаче смотреться.
или можно заложиться на изменения в фиксированной клетке с проверкой запонения прочих.
У меня второй случай, и он меня вполне устраивает. Кнопка вызвала бы проблемы, когда я на одном листе вычисляю много слов.

бабайС екселем работаю мало и событий на листах не очень люблю.
по памяти - есть там тонкие заморочки с обрывом вычислений при использовании пользовательских волатильных функций. дело прошлое сразу не вспомню и не сформулирую.
Понял, спасибо за предостережение.

бабайслушай - у тебя русский на компуктере есть - табличку с рускими буквами твой ексель съест?
Съест с любыми. В эпоху Юникода живем, как-никак. А русский язык у меня - один из трех установленных (RU/EN/HE).

бабайщаз прям малек в заморочке, а вечерком могу попробовать каку пригодну к делу демонстрашку выложил бы
Спасибо, конечно, но я совершенно не имел в виду тебя напрягать.

бабайможет дашь русскую аналогию - каким боком рама к маме прислоняется на примере единственного и множественного прислоняния.
За прислоняния я пока не берусь, бо дюже муторно. Хотя в планы и заложено. Пока рисуется только одно слово в одной ячейке. Для упрощенного моделирования сейчас попробую соорудить нечто на русском языке.
...
Рейтинг: 0 / 0
Пытаюсь сделать Эксель умнее, чем он есть?
    #34256999
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlWorksheet_Change с проверкой Target это то самое что тебе нужно.
А это как? Что такое Target?

White OwlПусть одна маленькая (центральная) функция формирует очередной кусок слова и коментарий почему именно этот кусок слова использован. А две дополнительные функции будут ждать команды пользователя и выводить результаты, одна будет выводить результат с коментарием, вторая только результаты. И запускай их по отдельности.
Будем считать, что понял... Но все равно остается вопрос, как выводить результаты функции, которая вычисляет массив.
...
Рейтинг: 0 / 0
Пытаюсь сделать Эксель умнее, чем он есть?
    #34257044
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч White OwlWorksheet_Change с проверкой Target это то самое что тебе нужно.
А это как? Что такое Target?
Параметр события.


Владимир Саныч White OwlПусть одна маленькая (центральная) функция формирует очередной кусок слова и коментарий почему именно этот кусок слова использован. А две дополнительные функции будут ждать команды пользователя и выводить результаты, одна будет выводить результат с коментарием, вторая только результаты. И запускай их по отдельности.
Будем считать, что понял...Ой, ну вот тебе пример. Сделай новую книгу, в самостоятельный модуль положи макрос:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Option Explicit

Sub StringToCodes(pRoot As Range, pAnswer As Range, Optional pComments As Range)
    Dim i As Integer, c As String
    Dim sAnswer As String
    
    sAnswer = ""
    For i =  1  To Len(pRoot.Text)
        If i >  1  Then
            sAnswer = sAnswer & ", "
        End If
        c = Mid(pRoot.Text, i,  1 )
        sAnswer = sAnswer & Asc(c)
        
        If Not pComments Is Nothing Then
            pComments.Cells(i,  1 ).Value = "ASCII code of '" & c & "' is " & Asc(c)
        End If
    Next
    pAnswer.Value = sAnswer
End Sub
Потом на два разных рабочих листа положи события Worksheet_Change:
Код: plaintext
1.
2.
3.
4.
5.
6.
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        StringToCodes pRoot:=Target, pAnswer:=Target.Offset( 0 ,  1 ), pComments:=Target.Offset( 1 ,  1 )
    End If
End Sub
Код: plaintext
1.
2.
3.
4.
5.
6.
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column =  1  Then
        StringToCodes pRoot:=Target, pAnswer:=Target.Offset( 0 ,  1 )
    End If
End Sub
На первом листе макрос вызывается только для одной ячейки, на втором для всех ячеек первой колонки. С первого листа макрос вызывается с третьим параметром, со второго вызывается без третьего параметра. И вся разница.
Теперь замени мой StringToCodes на свой собственный макрос и задача решена.

Владимир СанычНо все равно остается вопрос, как выводить результаты функции, которая вычисляет массив.Да не нужна тебе функция вычисляющая массив. Такая фигня вообще никогда и никем не делается (ну кроме явных чайников :))
...
Рейтинг: 0 / 0
Пытаюсь сделать Эксель умнее, чем он есть?
    #34257074
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlНа первом листе макрос вызывается только для одной ячейки, на втором для всех ячеек первой колонки.
Видимо, к вечеру совсем туплю. Как вызывать такой макрос из ячейки?

===
Вот соорудил нечто похожее, но на примере русского языка и гораздо проще. Зелеными помечены ячейки, которые я вычисляю. Но в функции заполняется еще и коллекция Story. Как ее вывести куда-нибудь?
...
Рейтинг: 0 / 0
Пытаюсь сделать Эксель умнее, чем он есть?
    #34257076
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Пытаюсь сделать Эксель умнее, чем он есть?
    #34257114
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новая версия - исправлен баг.
...
Рейтинг: 0 / 0
Пытаюсь сделать Эксель умнее, чем он есть?
    #34257132
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч White OwlНа первом листе макрос вызывается только для одной ячейки, на втором для всех ячеек первой колонки.
Видимо, к вечеру совсем туплю. Как вызывать такой макрос из ячейки?Никак. Ничего не надо вызывать из ячейки вообще. Переверни задачу. Сейчас ты пытаешься решить задачу: "как заполнить две ячейки через формулу записаную в одной ячейке" Эта задача решения не имеет. Зато если ты поставишь задачу наоборот: "Как рассчитать несколько значений и раскидать их по разным ячейкам" то все становится просто и легко.
...
Рейтинг: 0 / 0
Пытаюсь сделать Эксель умнее, чем он есть?
    #34258286
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К утру дошло, что из ячейки надо убрать формулу. Спасибо, буду стараться въехать.
...
Рейтинг: 0 / 0
Пытаюсь сделать Эксель умнее, чем он есть?
    #34259791
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ура, получилось ВСЁ. Спасибо ВСЕМ!
...
Рейтинг: 0 / 0
Пытаюсь сделать Эксель умнее, чем он есть?
    #34259952
Бабай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Саныч
поздравляю.

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

"В принципе" тут есть предмет для поспора, но тот пример, который выкладывается, более-менее
ясно показывает - почему его слова имеют основание существовать.

Будет интерес глянь. Сам по себбе пример рабочий, но делать так не надо.
...
Рейтинг: 0 / 0
Пытаюсь сделать Эксель умнее, чем он есть?
    #34261219
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабайБудет интерес глянь. Сам по себбе пример рабочий, но делать так не надо.
Честное слово, круто. Впечатляет и дизайн (и ведь не жалко было времени!), и количество кода (в котором я, наверно, никогда не разберусь). На этом фоне нагло лезут в глаза мои баги (например, буква О добавляется после приставок, кончающихся на гласную, и получаются слова типа выогнать или доогнать).
...
Рейтинг: 0 / 0
Пытаюсь сделать Эксель умнее, чем он есть?
    #34261274
Бабай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все бы вам посмеиваться, сударь...
:)
спасибо за отзыв не взирая.


будут вопросы про ексель - постараюсь ответить.
правда знаю я его почти нет. слабовато, то есть.
...
Рейтинг: 0 / 0
Пытаюсь сделать Эксель умнее, чем он есть?
    #34261538
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабайвсе бы вам посмеиваться, сударь...
:)
спасибо за отзыв не взирая.
Эх... Ну почему люди не верят, когда им делают комплименты...
...
Рейтинг: 0 / 0
14 сообщений из 39, страница 2 из 2
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Пытаюсь сделать Эксель умнее, чем он есть?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]