2. Вместо ввода начального и конечного значения отрезка в отдельные строки, давайте также объединим их в одной строке.
Начало
Конец
0
2
3.Рассчитанные значения (y): рассчитаем значения (y) для каждого значения (x) на отрезке. Например, мы можем использовать формулу (y = ax^2 + bx + c), чтобы заполнить столбец (y).
4. Строим график: Выделите столбцы (x) и (y), затем выберите “Вставка” > “Диаграмма” > “График рассеяния” или “График линий”. Добавьте подписи осей, заголовок и другие необходимые элементы. Вы можете изменять значения коэффициентов и отрезка в таблице, и график будет автоматически обновляться.
написал: как в Power BI сделать всплывающее окно с подсказкой на срезе
В разделе "Редактирование" (Edit) выберите элемент визуализации, к которому вы хотите добавить всплывающую подсказку.
На панели свойств (Properties) найдите опцию "Всплывающая подсказка" (Tooltip) и активируйте её.
Появится возможность редактировать содержимое всплывающей подсказки. Вы можете использовать формулы DAX для форматирования текста и отображения нужной информации.
Добавьте в формулу DAX все необходимые данные и метрики, которые вы хотите отобразить во всплывающей подсказке.
После завершения редактирования сохраните отчет или панель.
Теперь, когда вы наведете курсор на элемент визуализации, всплывающее окно с подсказкой будет отображаться, показывая информацию, которую вы определили в шаге 3.
Для создания такого графика в Excel вам следует использовать тип диаграммы "Диаграмма рассеяния с линиями и маркерами". Вот шаги, которые вы можете выполнить:
Выделите ваши данные, включая время начала работ, время окончания работ, номера бригад и наименования объектов.
Перейдите на вкладку "Вставка" (Insert) и выберите тип диаграммы "Диаграмма рассеяния с линиями и маркерами" (Scatter with Straight Lines and Markers).
После этого откроется пустой график.
Добавьте данные на график следующим образом:
Выберите данные для оси X (время начала работ).
Выберите данные для оси Y (номера бригад).
Добавьте маркеры для каждой точки согласно вашим данным.
Для маркеров укажите диапазон значений, включая номер бригады и наименование объекта, чтобы они отображались в виде подписей на графике.
Настройте оси и масштабы в соответствии с вашими данными для лучшего отображения информации.
Настраивайте стиль и формат графика по вашему усмотрению, чтобы сделать его более читаемым и информативным.
Применить сценарий поиска решений для всех строк в таблице, Значение коэффициента наценки нужно изменить так, чтобы в формуле расчета наценки за минусом издержек остался определенный процент
Вы можете использовать функцию "Цель поиска". Примерно так:
Добавьте новый временный столбец, где будет рассчитываться наценка при текущем коэффициенте.
Используйте формулу в новом столбце, чтобы рассчитать наценку по текущему коэффициенту. Предположим, что столбец с коэффициентом называется "Коэффициент наценки", а столбец с наценкой после издержек называется "Наценка после издержек". Формула может выглядеть примерно так: =ЦЕЛЬ(0,1,Наценка_после_издержек,0,001,2,10%), где "Наценка_после_издержек" - это ваша ячейка с наценкой после издержек.
Теперь используйте функцию "Цель поиска" (Data > Forecast > What-If Analysis > Goal Seek), чтобы изменить значение коэффициента наценки так, чтобы значение в столбце "Наценка после издержек" составляло точно 10%. Выберите целевую ячейку (столбец коэффициента наценки), которую вы хотите изменить, а в качестве цели выберите ячейку с формулой для наценки после издержек, а в качестве значения, к которому нужно стремиться, укажите 10%.
Это должно изменить значение коэффициента наценки таким образом, чтобы значение в столбце "Наценка после издержек" было точно равно 10%.
Для параноиков! Ставьте на флешку что-то типа PrivateDisk (что это смотреть тут). Создает невидимую область (AES 256 bit) на диске или флешке. В эту область кладете свой файл. После демонтажа диска файо просто никто не увидит, даже если сопрёт флешку. Перед этим из файла Excel делаете exe с помощью этой программы (см.) . В ней можете установить опцию защиты от копирования, не даст вообще угнать файл с флешки. НЕ КОПИРУЕТСЯ! + доп.фичи - установка пароля на файл exe и масса других приблуд для параноиков. Если потребуются перечисленные мной проги - в личку!
Именно проблема в защите. Об этом я также на форуме писал и предлагал своё решение. Безусловно согласен, что это все не выход, но хоть какой-то. Даже в виде тестирования или демки программы использовать её. Если нравится и все устраивает, то можно и в хлам превратить после оплаты.
Если програ разрабатывается для компании, за нее платятся деньги, она внедряется в компанию, то админ должен дать ей разрешение на функционал. Естественно, что сторонние приложения игнорятся админом. В мирных, домашних целях на персональном пк все открывается без вопросов. Конечно, надо учитывать УАК.
Вот одна из формул, которая работает у меня лично, при компиляции в exe проблем не возникло. Конечно, не претендую на сложность формулы, но эта работает без проблем. =ЕСЛИ(ЕОШ(ИНДЕКС(Данные;НАИМЕНЬШИЙ(ЕСЛИ(ПОИСКПОЗ(Данные;Данные;0)=СТРОКА(ДВССЫЛ("1:"&ЧСТРОК(Данные)));ПОИСКПОЗ(Данные;Данные;0);"");СТРОКА(ДВССЫЛ("1:"&ЧСТРОК(Данные))))))=ИСТИНА;"";ИНДЕКС(Данные;НАИМЕНЬШИЙ(ЕСЛИ(ПОИСКПОЗ(Данные;Данные;0)=СТРОКА(ДВССЫЛ("1:"&ЧСТРОК(Данные)));ПОИСКПОЗ(Данные;Данные;0);"");СТРОКА(ДВССЫЛ("1:"&ЧСТРОК(Данные))))))
Ваш Excel-файл упаковывается в MSI, устанавливается на комп exe. Никаких админских прав не требуется для открытия упакованной программы и её работы. Все функционирует как часы. Если кто сомневается, то трогать ничего не надо или для теста существует Shadow Defender. Для уточнения, есть ли майнеры, трояны и вирусы, существует virustotal.
Для всех, кто любит и интересуется Excel, и не только, оставляю небольшой подарок. Описание подарка смотрим тут. Сам подарок, кому понадобится, забираем тут.
Спасибо огромное, уважаемый kuklp Таблица не глючная. Я втупую скопировал ваш код и вставил в свою. Всё прекрасно заработало без проблем. Подумаю, из-за чего такое могло происходить. Предполагаю, что проблема была в необъявленной переменной LastRow&
Тему можно и закрыть. Всем огромное спасибо за участие!
Результат нулевой! Подвешивает Excel. Всех, наверное, достал. Выкладываю файл с проблемой. Буду признателен за подсказку. Можно, конечно, просто копировать формулу из предыдущей строки вручную(не царь ведь!), однако хочется разобраться и довести этот вопрос до логического конца. Жена чуть не убила вчера, весь праздник вместо того, чтобы , провел в раздумьях. В чем ошибка?
Уважаемый The_Prist Пробую ваш вариант. Работает, формула вставляется, но выдает ошибку "Method ''Formula" of object 'Range' failed" После закрытия сообщения об ошибке формула сохраняется.
Вот полный листинг кода:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a
Application.ScreenUpdating = False
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
' Тупорылая проверка
If Cells(LastRow + 1, 4) = "" Then ' Тут располагается выпадающий список со значениями, если пусто, тогда уходим
Exit Sub
End If
If Cells(LastRow + 1, 8) = "" Then ' Тут располагается выпадающий список со значениями, если пусто, тогда уходим
Exit Sub
End If
Cells(LastRow - 0, 6).Select
a = Cells(LastRow - 0, 6).Formula
Cells(LastRow + 1, 6).Formula = a ' Вот тут и возникает ошибка!!!
Application.ScreenUpdating = True
End Sub
Всем доброго дня! Excel 2007 Есть необходимость программно скопировать формулу из верхней ячейки в следующую пустую одного и того же столбца. Событие происходит не в модуле, а на листе (Private Sub Worksheet_Change(ByVal Target As Range)) Что делаю:
И тут загвоздка. Метод copy paste не работает, ошибка Object required Назначение переменной "а" в качестве as Range почему-то не работает или я туплю (начал хорошо отмечать праздник...)
Здравствуйте, Николай! Спасибо вам за проделанный труд и такую прекрасную сборку наиполезнейших функций! Приобрел сегодня вашу надстройку и сразу появился вопрос. Попытался преобразовать число в пропись с помощью библиотеки, но получил ошибку #ЗНАЧ! Причем возникла она, когда вводил в поля валюты EUR, а язык - RU. Если эти вставки удалить из формулы, то всё работает. Не подскажете, что может быть за проблема? На всякий случай прилагаю файлик Excel с этим экспериментом.
Не очень понятно, где у Вас ночные часы, где вечерние? Если считать ночные с 00:00 по 06:00, то как Вы предполагаете вечерние? С какого и по какое время? В таблице увидел большие странности, формулы слишком громоздки не то, что для вычислений, но и для понимания. Мне кажется, можно найти более простое решение, если чуть-чуть изменить структуру таблицы. Дату указать отдельно, а часы начала и окончания работ - также отдельно. Сразу отпадет необходимость в смещениях и прочих хитростях.
В ячейке "Начало" пишем не 28.02.2010 5:40:00, а 5:40 Соответственно в ячейке "Конец" - не 28.02.2010 15:20:00, а 15:20
В вычислениях имеем: В ячейку "Раб.время" вводим формулу: =ОСТАТ(RC[-1]-RC[-2];1) вместо нудного условия =ЕСЛИ(ИЛИ(RC[-2]="";RC[-1]="");"";RC[-1]-RC[-2])
В ячейку "Ночные" вместо гигаформулы: =ЕСЛИ(ИЛИ(RC[-3]="";RC[-2]="");"";(СУММ(--(СТРОКА(ИНДЕКС(R1C1:R3000C1;ТЕКСТ(RC[-3];"[мм]")-ТЕКСТ(ЦЕЛОЕ(RC[-3]);"[мм]")+1):ИНДЕКС(R1C1:R3000C1;ТЕКСТ(RC[-2];"[мм]")-ТЕКСТ(ЦЕЛОЕ(RC[-3]);"[мм]")))=ТРАНСП(СТРОКА(R1321:R1800))))+СУММ(--(СТРОКА(ИНДЕКС(R1C1:R3000C1;ТЕКСТ(RC[-3];"[мм]")-ТЕКСТ(ЦЕЛОЕ(RC[-3]);"[мм]")+1):ИНДЕКС(R1C1:R3000C1;ТЕКСТ(RC[-2];"[мм]")-ТЕКСТ(ЦЕЛОЕ(RC[-3]);"[мм]")))=ТРАНСП(СТРОКА(R1:R360)))))/1440)
по моему мнению надо поставить более простую, которая выполняет те же действия, что и мегаформула, но понятнее и удобнее для редактирования: =ЕСЛИ((RC[-3])<ВРЕМЯ(6;0;0);ВРЕМЯ(6;0;0)-(RC[-3]);ЕСЛИ((RC[-3])>ВРЕМЯ(6;0;0);ВРЕМЯ(6;0;0);0))
Судить строго не надо, просто сделал это на вскидку, возможно, не учел какую-то проверку. Не думаю, что надо так извращаться с простым заданием. Вечерние не делал, так как не понял временной период.
Однако хотел просто показать, как с помощью простой реструктуризации данных можно значительно упростить себе жизнь.
Спасибо за листинг. Но тут у Вас нет свободы для пользователя. Вам заранее известен серийник диска, к тому же Вы жестко устанавливаете свой пароль, что может не понравиться пользователю.
Я предложил свой способ, как вариант при установке на не известный заранее компьютер. Листинг упрощен, показана именно та часть кода, которая отвечает за считывание номера диска и назначения свободного пароля пользователя. Паранойя состоит и в том, что при получении файла почтой, пользователь устанавливает его на машину, при первом запуске программа считывает диск, предлагает установить пароль, после чего, в теневом режиме, удаляет скачанный файл.
Я и открыл специально эту тему, так как вопрос может интересовать многих разработчиков. Штатные средства защиты достаточно упрощены. Конечно, сломать пароль в 2007 сложнее, чем в 2003. Однако, тут есть и неудобства при паролировании файла. Ведь скачанная книга может быть передана другому челу вместе с подсмотренным или сворованным паролем.
{quote}{login=SerJukov}{date=07.03.2010 10:28}{thema=Re: Как уберечь файл от воровства}{post}А не могли бы Вы поделиться программным кодом. Просто сейчас столкнулся с такой же ситуацией: на созданный мною файл уже имеется слишком много желающих, а он создается только для одного рабочего места.{/post}{/quote}
Вот ориентировочный упрощенный код. Переделайте то, как Вам нужно. Тут всё очень просто, думаю, проблем с внедрением не будет.
Пожелания и комментарии приветствуются!!!
Private Sub Workbook_Open() Dim fs, d, disk
Worksheets("example").Visible = True
Set fs = CreateObject("Scripting.FileSystemObject") Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(drvpath)))
' Пока данные не известны If Worksheets("example").Range("b2").Value = "" Then disk = d.SerialNumber Worksheets("example").Visible = True Worksheets("example").Unprotect Password:="12345" Worksheets("example").Range("b2").Value = disk End If
If Worksheets("example").Range("b2").Value <> "" Then disk = d.SerialNumber If Worksheets("example").Range("b2").Value <> disk Then msg = "Файл поврежден! Работа прекращена!" MsgBox msg Application.DisplayAlerts = False Application.Workbooks.Close End If End If
If Worksheets("example").Range("b1").Value = "" Then Worksheets("example").Visible = True Worksheets("example").Unprotect Password:="12345" Range("B1:b2").Select Selection.NumberFormat = "General"
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 'Блокировка Save as If SaveAsUI Then Cancel = True End If End Sub
Это код для формы ввода пароля
Private Sub CommandButton_OK_pass_Click()
If ThisWorkbook.Worksheets("example").Range("b1").Value = pass_field.Value Then Application.ScreenUpdating = False Worksheets("necessary sheet").Activate Application.ScreenUpdating = True Unload pass ' Показываем то, что требуется Exit Sub End If
pass_field.Value = "" pass_field.SetFocus
msg = "Вы не знаете пароля!" & vbCrLf msg = msg & " Программа будет закрыта!" MsgBox msg Application.DisplayAlerts = False Application.Workbooks.Close
Exit Sub
End Sub
Это для того, чтобы юзер не смог закрыть форму, нажав на крестик справа вверху:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) msg = "" If CloseMode = vbFormControlMenu Then msg = msg & "Таким образом" & vbCrLf msg = msg & " форму закрыть нельзя!" & vbCrLf MsgBox msg Cancel = True End If End Sub
Private Sub Worksheet_Activate() InputPass = InputBox("Введите Ваш будущий пароль доступа к файлу!") 'Worksheets("example").Unprotect Password:="12345"
Sheets("example").Range("b1").Value = InputPass On Error Resume Next Sheets("example").Protect Password:="12345", DrawingObjects:=True, Contents:=True, Scenarios:=True ActiveWorkbook.Save Worksheets("example").Visible = xlSheetVeryHidden Application.ScreenUpdating = False Worksheets("example-example").Activate Application.ScreenUpdating = True 'Тут показываем то, что Вам требуется End Sub
И напоследок:
Private Sub Worksheet_Deactivate()
ActiveWorkbook.Save Sheets("example").Protect Password:="12345", DrawingObjects:=True, Contents:=True, Scenarios:=True Worksheets("example").Visible = xlSheetVeryHidden ' Переходим на нужный лист End Sub
Дело в том, что идея состоит не в том, чтобы вывести форму на запрос пароля, таким образом стимулируя вора взломать код, а в том, чтобы отбить у него желание вообще пытаться что-то сделать, получив сообщение о том, что файл поврежден. Это поставит его в тупик.
Буду благодарен за наводку на взлом файла, который защитил именно этим способом. Хотел бы усовершенствовать данный алгоритм. Просто мне нравится делать эксперименты в Excel.
А как насчет подбора пароля стандартными возможностями и программами? Взломать можно всё, мы это все прекрасно знаем. Конечно, может это и паранойя!
Вполне достаточно штатного запароливания. Просто хотел поделиться некоторой идейкой. P.S. Если макросы отключены, то и сделать ничего нельзя, просто происходит завис книги, не более того. Лист защищен, нет даже возможности что-то на нем редактировать.. Сочетание CTRL+BREAK отключено.
Если Вам необходимо, как я понял, определить количество дней между двумя датами, воспользуйтесь функцией ЧИСТРАБДНИ(нач_дата,кон_дата,[праздники]) Праздники - необязательно,определяется диапазоном ячеек, где перечислены даты с праздниками. А уж как и куда встроить, подумайте сами, ведь Вам виднее!
Вот столкнулся с таким явлением. Приятель вел базу покупателей в файле Excel. Доброжелатель скопировал этот файлик и поимел его клиентуру. Была поставлена задача уберечь файл от копирования на чужой компьютер.
Решил её так: создал код, который читает номер диска компьютера, при первом входе пользователю предлагается установить свой пароль на документ. Создается скрытый лист, в ячейки которого записывается номер диска и пароль. При повторном входе в систему вываливается окошко с запросом пароля, если пароль и номер диска совпадают, тогда книга открывается. При тупом копировании файла, даже если пароль известен, но нет совпадения с номером диска, выдается системное сообщение о том, что файл поврежден. Книга закрывается.
Может, есть ещё интересные решения защиты книги от воровства? Было бы неплохо, если бы поделились соображениями!
Всем доброго времени суток! Наконец-то нашел приличный форум по теме, хотя и флуда достаточно. Спасибо организатору. В связи со вступлением в сообщество, решил поделиться коллекцией своих книг, вернее, не своих, а то, что есть у меня.
Вот список: Microsoft Office Excel 2007 Visual Basic for Applications Step by Step Microsoft Press | ISBN: 073562402X | 384 pages | May 16, 2007 | CHM | 14 Mb
Charts and Graphs for Microsoft® Office Excel 2007 Que; 1 edition | ISBN: 0789736101 | 480 pages | April 24, 2007 | PDF | 18 Mb
Microsoft Excel Data Analysis and Business Modeling (Bpg-Other) Microsoft Press | ISBN: 0735619018 | 624 pages | February 25, 2004 | CHM | 36 Mb
Excel Advanced Report Development Wiley | ISBN: 0764588117 | 504 pages | July 29, 2005 | PDF | 9 Mb
Microsoft Office Excel 2007 Inside Out Microsoft Press | ISBN: 073562321X | 1088 pages | February 14, 2007 | CHM | 76 Mb
Formulas and Functions with Microsoft Office Excel 2007 Que; 1 edition | ISBN: 0789736683 | 552 pages | March 14, 2007 | PDF | 15 Mb
Microsoft Office Excel 2007 Step by Step Microsoft Press | ISBN: 073562304X | 432 pages | January 31, 2007 | CHM | 32 Mb
Microsoft Excel and Access Integration: With Microsoft Office 2007 Wiley | ISBN: 0470104880 | 408 pages | April 30, 2007 | PDF | 6 Mb
Excel 2007 Bible Wiley | ISBN: 0470044039 | 912 pages | January 3, 2007 | PDF |24 Mb
Microsoft Office Excel 2007: The L Line, The Express Line to Learning Wiley | ISBN: 047010788X | 470 pages | May 7, 2007 | PDF | 33 Mb
Microsoft Office Excel 2007: Data Analysis and Business Modeling Microsoft Press | ISBN: 0735623961 | 624 pages | May 16, 2007 | CHM | 41 Mb
Excel 2007: The Missing Manual Pogue Press; Rev Ed edition | ISBN: 0596527594 | 856 pages | December 27, 2006 | PDF | 24 Mb
Excel 2007: Beyond the Manual Apress | ISBN: 1590597982 | 417 pages | March 20, 2007 | PDF | 10 Mb