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

Короткий ответ — нет, нет возможности получить доступ к информации на панели задач. При этом существует несколько подходов, которые вы можете использовать для воссоздания информации, чтобы иметь к ней доступ.

Первый обходной путь не требует использования макроса, но вы можете счесть его излишним. (Кто сказал, что в Excel нельзя застрелить комара из базуки?) Этот подход предполагает использование инструмента анализа данных. Этот инструмент реализован с помощью надстройки; вы можете узнать, включен ли он в вашей системе, посмотрев на вкладку «Данные» на ленте, где вы должны увидеть инструмент анализа данных справа. Если вы его не видите, выполните следующие действия:

  1. Откройте диалоговое окно «Параметры Excel». (В Excel 2007 нажмите кнопку «Office», а затем нажмите «Параметры Excel. В Excel 2010 и более поздних версиях откройте вкладку« Файл »на ленте, а затем нажмите« Параметры ».)

  2. В левой части диалогового окна щелкните Надстройки.

  3. Внизу диалогового окна используйте раскрывающийся список «Управление», чтобы выбрать надстройки Excel.

  4. Щелкните кнопку Go. Excel отображает диалоговое окно надстроек. (См. Рис. 1.)

  5. Установите флажок рядом с Analysis ToolPak.

  6. Щелкните ОК.

При активированной надстройке анализа данных выберите ячейки, которые вы хотите проанализировать. Вы должны видеть свою статистику на панели задач, как обычно. Теперь откройте вкладку «Данные» на ленте и щелкните инструмент «Анализ данных».

Excel отображает диалоговое окно «Анализ данных». (См. Рис. 2.)

image

Рисунок 2. Диалоговое окно «Анализ данных».

Это диалоговое окно не делает ничего, кроме списка множества различных анализов, которые вы можете выполнить. Вы хотите выбрать опцию «Описательная статистика» и затем нажать «ОК». После этого Excel отобразит диалоговое окно «Описательная статистика». (См. Рис. 3.)

image

Рисунок 3. Диалоговое окно «Описательная статистика».

Если ячейки, которые вы хотите проанализировать, еще не отмечены в поле «Диапазон ввода», щелкните один раз в этом поле, а затем выберите ячейки на листе.

Затем в нижней части диалогового окна установите флажок Сводная статистика. Когда вы нажимаете ОК, Excel создает новый рабочий лист, содержащий всю статистику (и многое другое), которая может отображаться на панели задач. Затем вы можете скопировать любой из них обратно на свой рабочий лист, если хотите, и удалить добавленный рабочий лист, когда закончите с ним.

(Понимаете — я же сказал вам, что это может быть излишним)

Если вы не против использования макроса, вы можете создать определяемую пользователем функцию, которая будет возвращать желаемую информацию. Можно использовать следующее:

Function Stats(R As Range, Op As String) As Long     Dim sTemp As String     Dim c As Range     Dim sOp As String

Stats = 0     On Error GoTo Done     sOp = UCASE(Op)

Select Case sOp         Case "AVG"

Stats = WorksheetFunction.Average(R)

Case "CNT"

For Each c In R                 If Not IsEmpty(c.Value) Then Stats = Stats + 1             Next c         Case "MIN"

Stats = WorksheetFunction.Min(R)

Case "MAX"

Stats = WorksheetFunction.Max(R)

Case "SUM"

Stats = WorksheetFunction.Sum(R)

Case Else             sTemp = "This function requires two parameters. "

sTemp = sTemp & "The first is the cells you want evaulated. "

sTemp = sTemp & "The second is the operation you want "

sTemp = sTemp & "performed. You can use the following "

sTemp = sTemp & "operations:" & vbCrLf & vbCrLf             sTemp = sTemp & "   AVG (average)" & vbCrLf             sTemp = sTemp & "   CNT (count of cells with values)" & vbCrLf             sTemp = sTemp & "   MIN (minimum)" & vbCrLf             sTemp = sTemp & "   MAX (maximum)" & vbCrLf             sTemp = sTemp & "  * SUM (sum)" & vbCrLf             MsgBox sTemp     End Select Done:

End Function

Чтобы использовать функцию, просто введите в ячейку что-то вроде следующего:

=Stats(B3:B7, "Min")

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

=MIN(B3:B7)

Вместо этого вы можете создать макрос, привязанный к сочетанию клавиш. Затем это можно использовать с любыми выбранными ячейками, чтобы поместить желаемую информацию в буфер обмена:

Sub StatClip()

Dim sTemp As String     Dim R As Range     Dim f As Variant     Dim obj As New DataObject

Set R = Selection     Set f = Application.WorksheetFunction

sTemp = "Address:" & vbTab & R.Address & vbCrLf     sTemp = sTemp & "Average:" & vbTab & f.Average(R) & vbCrLf     sTemp = sTemp & "Count: " & vbTab & f.Count(R) & vbCrLf     sTemp = sTemp & "Min: " & vbTab & f.Min(R) & vbCrLf     sTemp = sTemp & "Max: " & vbTab & f.Max(R) & vbCrLf     sTemp = sTemp & "Sum: " & vbTab & f.Sum(R) & vbCrLF

obj.SetText sTemp     obj.PutInClipboard End Sub

Помните, что вы хотите назначить этот макрос сочетанию клавиш. Таким образом, вы можете вызвать его (используя ярлык), когда на вашем листе выделены некоторые ячейки. Если вы получаете сообщение об ошибке при попытке запустить макрос, это, несомненно, связано с тем, что для вашего проекта не включена библиотека объектов Microsoft Forms 2.0. В редакторе VBA вам нужно выбрать Инструменты | Ссылки для включения необходимой библиотеки.

Когда вы действительно вызываете макрос, он будет выглядеть так, как будто ничего не происходит. Это нормально; помните, что информация помещается в буфер обмена. После запуска макроса вам нужно выбрать другую ячейку и затем нажать Ctrl + V, чтобы вставить это содержимое буфера обмена на рабочий лист.

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (6232) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.