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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 29 След.
Р7 офис, Импортозамещение аналог excel
 
кстати, сегодня Р7 за 390р продают (лицензия на год) промо SHUTKA90
только чур не считать рекламой - ссылок не даю.

Пы Сы - не шутка.
Построение кривых на графике которые зависят от оси Х основного графика
 
Тут не в названии проблема, а в постановке задачи... У меня этих номограмм много.
sansin,
1. Как построена синяя линия
2. Как построены точки вне синий линии
3. Как должны быть связаны синяя линия, доп.линии и точки вне синий линии?

Если просто вертикальное смещение, с проходом через заданные точки, то вот

находишь уравнение аппроксимации заданной линии
определяешь смещение линий
строишь новые линии по полученным уравнениям
Определение промежуточных данных, Апроксимация, интерполяция и тому подобные шалости с табличными данными.
 
Из разряда было - стало.

Сейчас все отчёты стараемся делать с обновлённой графикой :) Перестроить при наличии оцифровки минут 30, а сколько потом удовольствия от красивой работы...  
Построение графика с дополнительными точками независящими от него
 
Цитата
написал:
Ну короче без данных этих точек не построить нормально  
Вообще не проблема. Ищи программы для оцифровки, например getdata graph digitizer,  и обрабатываете рисунок.
График точечный отрезков для Excel 2016, Показывать #NA() как пустую ячейку опция не работает.
 
Красьте через макрос. И меньше места занимает и больше вариантов...


В код листа
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [A2: C21]) Is Nothing Then ' Указание контрол. ячеек.
    ActiveSheet.ChartObjects("Диаграмма 1").Activate
    For Each icell In [C2: C21]                     ' Указание откуда берём указание цветов
        ActiveChart.SeriesCollection(1).Points(icell.Row - 1).Select
       Selection.Format.Line.ForeColor.RGB = RGB(50, 50, 50) ' Очистка графика
       If icell.Value = 0 Then Selection.Format.Line.ForeColor.RGB = RGB(255, 0, 0)
       If icell.Value = 1 Then Selection.Format.Line.ForeColor.RGB = RGB(0, 0, 255)
       If icell.Value = 2 Then Selection.Format.Line.ForeColor.RGB = RGB(0, 0, 0)
    Next
End If
End Sub
Функции для вычислений с разными параметрами
 
Цитата
написал:
Какими формулами или функциями можно воспользоваться в данном случае?
Функции - выпадающие списки.
Формулы - СУММ и СУММЕСЛИ. Ну и математические символы * / + - ... Ну и цифры от 0 до 9.
Извлечь дополнительные данные из функции пользователя
 
Вообще нет желания лезть в чужой СЛОЖННЫЙ код. Однако
1. Вывод результата работы функции располагается в одной ячейке (с)ДжонУокенбах , но это не правда, и об этом будет второй пункт.
Соответственно задача - вывести несколько данных из функции. Решается выводом массива (внезапно).
Т.е. код
Код
Public Function test(a, b)
Dim rez(1 To 4) As Double
rez(1) = a + b
rez(2) = a - b
rez(3) = a / b
rez(4) = a * b
test = rez
End Function
выдаст вам массив. В новых вериях он будет динамическим, и чтобы вызвать только первое значение надо вызывать с собачкой, а в старых версиях эксель доп.элементы (кроме первого) надо вызывать через ИНДЕКС.


2. А вот теперь 2, или "не всё у Уокенбаха правда, или во всём виноваты переводчики"
Результат работы функции действительно выводится (выводился) в ячейку вызова функции. Но был(есть) вариант замены значения в другой ячейке, при условии что там ранее было значение (если значения не было - будет ошибка). Т.е. заменить значение новым из сторонней функции. И в ячейке об этом будет тишина...

Например вот функция, в ячейке в которой она вызвана будет выведен результат работы функции, а в ячейках rez1 rez2 значения будут заменены.

Код
Function Fun_3(a#, b#, rez1 As Range, rez2 As Range) As Variant
    rez1.Replace rez1, a + b    
    rez2.Replace rez2, a - b    
    Fun_3 = "сумма в " & rez1.Address(0, 0) & ", разница в " & rez2.Address(0, 0)
End Function

Замена x^2 на pow(x,2), парсинг
 
Михаил предложил решение... Эх...
за последний(прошлый) год единственный код что я писал - это прорабатывал курс Михаила. А по работе vbа онли. Навыка без реальной работы нет. Жаль.
Замена x^2 на pow(x,2), парсинг
 
Надо Михаила спросить, как раз у него недавно курс по тексту закончился....
Замена x^2 на pow(x,2), парсинг
 
Понадобилось мне тут выполнить текстовое преобразование расчётного выражения в формат отличный от экселя.
При этом
23,21+-3*x^2+36*(25*x^1+36  *x^ 2)^3
должно превратиться в
23.21-3*pow(KKS,2)+36*pow((25*pow(KKS,1)+36*pow(KKS,2)),3)
т.е.
1. Возведение в степень надо прописывать как pow(x,2) вместо x^2 (степени до 9...)
2. По мелочи - заменить х на ККС (другое название аргумента), "+-" на "-", запятые на точки
Накидал небольшой код, всё работает но ощущение что изобретаю велосипед... Мысли есть, или и так пойдёт?
ПыСы думал в PQ глянуть... некогда :(
Код
Public Function parsing_1(txt As String, x As String, kks As String) As String
Dim Mas(1 To 10000) As String
Dim i As Long, k As Long, k0 As Long, m As Long
Dim rez As String
txt = Replace(txt, " ", "")
txt = Replace(txt, ",", ".")
txt = Replace(txt, "+-", "-")
For i = 1 To Len(txt)
    Mas(i) = Mid(txt, i, 1)
Next i
For i = 1 To UBound(Mas)
    If Mas(i) = "^" Then
        Mas(i) = ","
        For k = UBound(Mas) - 2 To i + 1 Step -1
            Mas(k + 2) = Mas(k + 1)
        Next k
        Mas(i + 2) = ")"
        ' Обработка степени числа, НЕ ВЫРАЖЕНИЯ
        If Mas(i - 1) <> ")" Then
            For k = i To 1 Step -1
                If Mas(k) = "+" Or _
                   Mas(k) = "-" Or _
                   Mas(k) = "*" Or _
                   Mas(k) = "/" Or _
                   Mas(k) = "(" Then
                    k0 = k
                    Exit For
                End If
            Next k
            For k = UBound(Mas) - 4 To k0 + 1 Step -1
                Mas(k + 4) = Mas(k)
            Next k
            Mas(k0 + 1) = "p"
            Mas(k0 + 2) = "o"
            Mas(k0 + 3) = "w"
            Mas(k0 + 4) = "("
        End If
        ' Обработка степени ВЫРАЖЕНИЯ
        If Mas(i - 1) = ")" Then
            For k = i - 1 To 1 Step -1
                If Mas(k) = ")" Then
                    m = m + 1
                End If
                If Mas(k) = "(" Then
                    m = m - 1
                End If
                If m = 0 Then
                    k0 = k
                    Exit For
                End If
            Next k
            For k = UBound(Mas) - 4 To k0 Step -1
                Mas(k + 4) = Mas(k)
            Next k
            Mas(k0 + 0) = "p"
            Mas(k0 + 1) = "o"
            Mas(k0 + 2) = "w"
            Mas(k0 + 3) = "("
        End If
    End If
Next i
For j = 1 To UBound(Mas)
    rez = rez & Mas(j)
Next j
parsing_1 = Replace(rez, x, kks)
End Function
Изменено: tutochkin - 13.02.2026 22:13:18
Точное значение для точки на графике при наведении курсором, Поиск возможности реализации показа значения для любой точки графика во всплывающем окне подсказки
 
Цитата
написал:
проще сделать его аппроксимацию
Хм... вот аппроксимацию сделать тут не проще... Форма что то типа гиперболического тангенса в замещённых осях, но это не точно и натягивать сову на глобус лень.
Точное значение для точки на графике при наведении курсором, Поиск возможности реализации показа значения для любой точки графика во всплывающем окне подсказки
 
Спасибо, посмеялся.
1. Число интерполяционных кривых бесконечно.
2. "Точно" это как? Сколько вешать в граммах?  Сколько знаков после запятой?

А если по делу - получайте функцию интерполяции и будете иметь решение задачи. Года четыре назад я выкладывал как сие делать на данном форуме. Дерзайте.

ПыСы, а если хотите тыкать мышкой по картинке и получать значение в точке (куда попали), то посмотрите проги типа GetData.

ПыПыСы Ну и чтобы не быть голословным взял по вашим исходным данным пару интерполирующих функций - кусочнокубическую и сплайн (тоже кубический, если не путаю.). То , что строит эксель при "сглаженная линия" - отдельная тема.
Так вот, визуально как бы одна линия, но по факту отклонение местами более 3%. И это по посчитанным значениям, а не "ткнул мышкой".
Изменено: tutochkin - 07.02.2026 23:50:31 (Добавил картинку)
Книга "Сводные таблицы в Microsoft Excel 2019" Билла Джелена, Нет доступа к файлам с примерами, может у кого они есть?
 
Посмотрите тут . Издание более новое, но ИМХО особых отличий не будет
VBA-функция сглаживания временных рядов
 
Интересная тема...
Применение InputBox в макросе с применением формулы, Применение InputBox в макросе с применением формулы
 
Olegas, попробуйте так:
Код
Range("N10:N" & lLastRow).FormulaR1C1 = "=IF(RC[-1]>0,RC[-1]/" & "userInput &",RC[-8])"

и всё таки я бы не использовал автоопределение типа, а указал вещественное... Плюс проверочку.

Код
Dim userInput As Double
Изменено: tutochkin - 07.01.2026 00:35:07
Собираем книжную полку для активных пользователей Excel, Какие конкретные книги вы бы посоветовали для изучения визуализации данных в Excel?
 
Цитата
написал:
В книге много интересных и свежих идей построения диаграмм практичных и красивых
ну чтобы посмотреть идеи можно просто перейти на https://spivak.ru/md/ И там же инструкции по их созданию.
Собираем книжную полку для активных пользователей Excel, Какие конкретные книги вы бы посоветовали для изучения визуализации данных в Excel?
 
Полистайте эту ветку вниз - тут тема про книги поднималось раза три за последние пол года.
Цитата
интересуют темы визуализации данных: создание красивых и информативных диаграмм, графиков и прочих элементов представления информации.

а вот про это можно говорить бесконечно... Их много, и все они разные. Я бы посоветовал школу Excellent, но она закрывается, так что не повезло.
А ниже несколько примеров разносторонности отображения графиков в эксель, не охватывающих и десятую часть вариаций.









Изменено: tutochkin - 25.12.2025 18:06:53
Посоветуйте какую Книгу хорошую по таблицам в экселе. что-нибудь с озона, Книга
 
Преобразовать время в текст
 
Ну так добавь минус...
Код
=ЕСЛИ(B6-A6>0;ТЕКСТ(ОСТАТ(B6-A6;1);"м")&" мин "&ТЕКСТ(ОСТАТ(B6-A6;1);"с")&" сек";"-"&ТЕКСТ(ОСТАТ(A6-B6;1);"м")&" мин "&ТЕКСТ(ОСТАТ(A6-B6;1);"с")&" сек")
Определение промежуточных данных, Апроксимация, интерполяция и тому подобные шалости с табличными данными.
 

Попалась мне в руки вот такая книжечка.  Элементы численного анализа и математической обработки результатов опыта | Овчинский Борис Владимирович, Гутер Рафаил Самойлович
Очень советую тем, кто хочет понять как в шестидесятых годах, не имея пайтонов, экселей и вообще, могли обрабатывать данные экспериментов получая вполне неплохие аналитические зависимости.

Чисто для меня стало фишкой возможность представления кривых в виде прямых на плоскости (как бы это не звучало - на рисунке правый нижний график это параболы :) ).

Ну и пара разобранных примеров из книги - https://rutube.ru/video/768b2e0793ad5cb899c4c87a2ebbdf9d/?r=wd
Безье или Лагранж как именно эксель сглаживает линии диаграм?Ряд Фурье тригонометрический.
 
Сплайном. По крайней мере визуально. К курилке есть моя тема, там вроде как разбирал.
Из формата 526 214 852 025 006,00 в GeneralNumber, Перевести число из одного формата, видимо, Standard, в обычный
 
Только недавно была похожая тема.
Вопрос к предложениям, а вы все символы пробелов так меня станете? Их же много... Не проще оставить только цифры и разделитель?
Типа так (сорри, я с телефона сейча
Код
Function DataPrep(str As String) As String
Dim ch As String, i As Long
For i = 1 To Len(str)
    ch = Mid(str, i, 1)
    If ch = "." Then DataPrep = DataPrep & ","
    If ch Like "[,0-9]" Then DataPrep = DataPrep & ch
Next i
End Function
Как построить график
 

Без макросов и доп.столбцов можно сделать так.
Определение промежуточных данных, Апроксимация, интерполяция и тому подобные шалости с табличными данными.
 
Довелось мне некоторое время проводить аппроксимацию номограммы в логарифмических осях.
Для тех кто не знает, это вот такие:

Оказывается штатными средствами аппроксимации экселя получить уравнение не получится.
Например для одной кривой и полиномиальном тренде имеем вот такое

При этом коэффициенты линии тренда совпадают с коэф-ми полученными через ЛИНЕЙН (см.табличку над графиком).

Для того чтобы получить уравнение следует:
1. Произвести преобразование исходных данных прологарифмировав их
2. Найти коэ-ты полинома (ai) на основании преобразованных данных
3. Считать по уравнению Y = 10 ^ (Σ ai·(log10(x))^i)

В результате имеем хорошее приближение


как то так...
Естественно всё это было автоматизировано с получением единого UDF для всей номограммы :) , но это совсем другая история.
Макрос вставляет данные из txt - в виде крякозябр и выделяет его
 
Цитата
написал:
Нужно чтобы просто текст вставился в ячейки - без каких-либо прочих действий.
так вставьте через PQ
Код
 Csv.Document(File.Contents("C:\Users\Администратор\Downloads\1.txt"),[Delimiter=":", Encoding=65001]) 

А про перекодировку файла было тут: на этом форуме

Изменено: tutochkin - 24.08.2025 15:05:19
Проверка ячейки на дату методом VBA
 
astepaa, так проверить принадлежность...
Код
Option Explicit
 
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:A10000")) Is Nothing Then
    Dim Cell
    Cell = Target.Value
    If IsDate(Cell) Then
        If Replace(Cell, "/", ".") = Format(Cell, "dd/mm/yyyy") Then
            Exit Sub
        End If
    End If
    MsgBox "Неверная дата" & Cell
End If
End Sub
Код VBA неправильно считает данные
 
Цитата
написал:
чтобы группировки и разделы не пересекались датами
Извините, но у вас такого быть не может. Прям первые две строки - имеют одинаковые/пересекающиеся диапазоны дат, но разные группировки.
ДР (новая), С ДНËМ РОЖДЕНИЯ
 
Спасибо :) Приложу все усилия, чтоб это лучшее самое наступило.
Аппроксимация экспериментальных данных функциями с тремя параметрами (коэффициентами)
 
Это уже давным давно выкладывал тут https://www.planetaexcel.ru/forum/?PAGE_NAME=read&FID=5&TID=152989&TITLE_SEO...
Ан нет, не прав. С поиском свободного коэф-та не делал. Ну кроме полиномных и им подобных естественно...
Впрочем при необходимости я бы это реализовал через модуль "Поиск решения".
Изменено: tutochkin - 29.07.2025 21:41:39
Макросом менять точку на запятую
 
sokol92, маленькое дополнение.
Т.к. основную боль доставляют не просто пробелы пробелы, а неразрывные пробелы, сжатые пробелы и т.д. то вместо
Код
Selection.Replace " ", "", xlPart
я бы использовал UDF типа такой (не претендую на оптимальность).
Код
Function DataPrep(str As String) As String
Dim ch As String, i As Long
For i = 1 To Len(str)
    ch = Mid(str, i, 1)
    If ch = "." Then DataPrep = DataPrep & ","
    If ch Like "[,0-9]" Then DataPrep = DataPrep & ch
Next i
End Function
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 29 След.
Наверх