Спасибо за ачивку:)
Этот бунд- прекрасное время, чтобы вернуться к чтению книг.
До новых встреч, друзья!
Тут недавно расплатилась на кассе и карту, чтоб не мешала вещи собирать, положила в задний карман джинс, и телефон туда же.
Выходя на улицу, решила вытащить телефон, ну и карту за одно переложить надежнее. Достаю телефон, а карты нет - понимаю, что я ее только что телефоном из кармана выкинула (камерой зацепила). Делаю еще пару шагов, пропуская человека на тропинке, и за одно еще раз проверяю карман - оборачиваюсь и вижу, как человек, который только что прошел мимо меня, что-то поднял с земли. В голове промелькнула мысль - мою карту поднял. Но разум откинул эту идею, ведь если он ее поднял, значит он видел как я ее уронила - а я же вот она, тут стою. Нормальный человек повернулся бы и попытался бы найти владельца, но он так уверенно пошел дальше, что я засомневалась и решила, что я все-таки карту оставила на кассе.
Хорошо что всеми картами можно управлять через мобильный банк. Заморозила тут же карту, и пошла перерывать сумки и рюкзак, в надежде, что я случайно закинула ее туда.
А тот чувак - не очень хороший человек. Мог бы и вернуть карту.
Пост в ответ на коментарии https://pikabu.ru/story/trebuetsya_pomoshch_s_tablitsey_9232263?utm_source=linkshare&utm_medium=sharing
Внезапно, чтобы при вводе данных в ячейку А1 произошли вычисления в ячейке В1 вовсе не обязательно иметь непосредственно в ячейке В1 формулу связанную с ячейкой А1. Да и вообще формулу там иметь не обязательно (0_о). Пример - https://cloud.mail.ru/public/pBRc/rd1RhvKjb
При вводе числа в выделенную ячейку столбца С в той же строке столбца В будет выведен квадрат введённого числа. Квадрат только в качестве примера. Можно, например, дату ввода данных в ячейку фиксировать :)
Естественно макрос имеет место быть (в коде листа).
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C3:C15")) Is Nothing Then
Target.Offset(0, 2).Value = Target.Offset(0, 0).Value * Target.Offset(0, 0).Value
End If
End Sub
где:
"C3:C15" - контролируемые ячейки
Target.Offset(0, 2).Value - данные выводятся в ячейку на две правее от той в которой произошли изменения.
В остальном согласен с другими ответами - предложенный топикстартером документ расчётов не содержит
Добрый день. Сегодня хотелось бы рассказать про виртуальную ось в экселе :).
Для примера попробуем решить задачку поворота графика на 90°. Т.е. чтобы линии строились не вдоль оси Х, а вдоль Y. Чисто ради примера...
Для этого потребуется... внезапно... построить ещё один график, который нам и заменит ось Y.
Методика построения для двух линий (см.рисунок ниже):
1. Создаём два дополнительных столбца равных по величине исходным данным. Столбец Х3 с равными значениями меньше минимального значения (для левого расположения оси) исходных данных. Столбец Y3 - с нумерацией исходных данных.
2. Строим три точечных графика (иксы и игрики пометил в названиях столбцов). Точнее диаграмму с тремя точечными графиками на ней... Не отдельные графики.
3. Настраиваем оси (мин/макс), при этом минимум по оси Х должен равняться значению заданному в Х3 (для левого расположения оси). Убираем отображение подписей. Убираем/настраиваем сетку.
4. Для 3-го (виртуального) графика включаем отображение меток данных, отключаем отображение осей ХY, указываем данные из ячеек как подписи, указываем расположение меток слева .
5. Меняем размер зоны построения, чтобы метки влезали красиво.
6. Настраиваем вид виртуальной оси (третьего графика) - вид маркеров, цвет линии и т.д.
Если нужно подписи иметь справа, то Х3 больше максимального значения исходных данных, Хмакс = Х3 и расположение меток - справа.
Как видно - совсем не трудное решение значительно расширяет функционал экселя в плане отображений.
Я думаю что понятно, это только пример... Как вариант другого применения - отображение меток событий неделя/месяц/год/квартал/полугодие...
============
ПыСы я немного заработался - готовлюсь к сдаче экзамена в РосТехНадзор... Не до постов пока. Всё таки в сорок лет учиться труднее чем в 20ть. Печаль...
Сегодня расскажу про простой способ разукрасить диаграммы, а именно заменить маркеры на произвольные рисунки.
Установка рисунков в качестве маркеров позволяет разнообразить внешний вид документации, сделав её нагляднее. Установка смайлов (© http://www.kolobok.us/ ) сделана в качестве примера (помните про Aiwan то? Или забыли...).
Для гармоничного отображения требуется проредить количество маркеров, в противном случае произойдёт наложение рисунков друг на друга. О прореживании писал ранее.
Заменить маркеры на рисунки, в данном случае они представлены смайлами, можно при помощи не сложного макроса
Sub Markers_Smiles()
ActiveSheet.ChartObjects("Диаграмма 1").Activate
For Each icell In [C2:C102]
ActiveChart.FullSeriesCollection(1).Points(icell.Row - 1).Select
' Убираю рамки вокруг маркеров
Selection.MarkerForegroundColorIndex = xlNone
' Установка типа маркера «Рисунок»
Selection.MarkerStyle = -4147
Selection.Format.Fill.UserPicture "D:\4.gif"
If icell.Value = 0 Then Selection.Format.Fill.UserPicture "D:\1.gif"
If icell.Value = 1 Then Selection.Format.Fill.UserPicture "D:\2.gif"
If icell.Value = 2 Then Selection.Format.Fill.UserPicture "D:\3.gif"
Next
End Sub
Где
[C2:C102] - столбец с признаками маркера. Число элементов равно числу данных (Х или Y). Может как заполняться вручную, так и быть расчётным (см.рисунок ниже).
D:\1.gif ... D:\4.gif - пути к рисункам.
Аналогично производится заполнение рисунками нескольких графиков на диаграмме
Прореживаем
Sub Прореживание_маркеров()
' Активируем диаграмму
ActiveSheet.ChartObjects("Диаграмма 1").Activate
' Перебор по всем графикам диаграммы
For k = 1 To ActiveChart.FullSeriesCollection.Count
' Удаляем все маркеры на линии
For i = 1 To ActiveChart.SeriesCollection(k).Points.Count
ActiveChart.FullSeriesCollection(k).Points(i).Select
Selection.MarkerStyle = -4142
Next i
' Выставляем маркеры с требуемым шагом.
For i = 1 To ActiveChart.SeriesCollection(k).Points.Count Step 4
ActiveChart.FullSeriesCollection(k).Points(i).Select
With Selection
.MarkerStyle = 8
.MarkerSize = 15
End With
Next i
Next k
End Sub
Проставляем рисунки
Public Sub color_graph()
ActiveSheet.ChartObjects("Диаграмма 1").Activate
For k = 1 To ActiveChart.FullSeriesCollection.Count ' Перебор по всем графикам
For Each icell In [C2:C102]
ActiveChart.FullSeriesCollection(k).Points(icell.Row - 1).Select
Selection.MarkerStyle = -4147
Selection.Format.Fill.UserPicture "D:\4.gif"
If icell.Value = 0 Then Selection.Format.Fill.UserPicture "D:\1.gif"
If icell.Value = 1 Then Selection.Format.Fill.UserPicture "D:\2.gif"
If icell.Value = 2 Then Selection.Format.Fill.UserPicture "D:\3.gif"
Next
Next k
End Sub
Аналогично разным графикам одной диаграммы можно присвоить уникальные маркеры
Sub Markers()
ActiveSheet.ChartObjects("Диаграмма 1").Activate
For i = 1 To ActiveChart.FullSeriesCollection.Count ' Перебор по всем графикам
ActiveChart.FullSeriesCollection(i).Select
Selection.MarkerForegroundColorIndex = xlNone
Selection.MarkerStyle = -4147
If i = 1 Then Selection.Format.Fill.UserPicture "D:\1.gif"
If i = 2 Then Selection.Format.Fill.UserPicture "D:\2.gif"
If i = 3 Then Selection.Format.Fill.UserPicture "D:\3.gif"
If i = 4 Then Selection.Format.Fill.UserPicture "D:\4.gif"
If i = 5 Then Selection.Format.Fill.UserPicture "D:\5.gif"
Next i
End Sub
Ну или просто разными штатными маркерами разные графики. Но в автоматическом режиме - очень сокращает время подготовки документации. Полезно при подготовке к печати в чёрно-белом варианте.
Sub Установка_разных_маркеров()
ActiveSheet.ChartObjects("Диаграмма 1").Activate
For i = 1 To ActiveChart.FullSeriesCollection.Count ' Перебор по всем графикам
ActiveChart.FullSeriesCollection(i).Select
Selection.Format.Line.ForeColor.RGB = RGB(0, 0, 0) ' Цвета линий и маркера
Selection.Format.Line.Weight = 0.75 ' Установка толщины линии
Selection.MarkerStyle = i ' Установка типа маркера
Selection.MarkerSize = 4 ' Установка размера маркера
Selection.Format.Fill.ForeColor.RGB = RGB(255, 255, 255) ' Установка заливки маркера
Next i
End Sub
Можно ли это сделать без макросов? Несомненно. Долго и нудно кликать кнопочки.
Но как по мне - проще скопировать и немного поправить код простого макроса. А в остальном - ваш выбор.