Листинг в excel это

Программным продуктом, незаменимым в офисной работе, является электронная таблица Microsoft Excel. При помощи этого продукта можно анализировать большие массивы данных. В Excel можно использовать более 400 математических, статистических, финансовых и других специализированных функций, связывать различные таблицы между собой, выбирать произвольные форматы представления данных, создавать иерархические структуры. Воистину безграничны методы графического представления данных: помимо нескольких десятков встроенных типов диаграмм, можно создавать свои, настраиваемые типы, помогающие наглядно отразить тематику диаграммы. Те, кто только осваивает работу с Excel, по достоинству оценят помощь «мастеров» — вспомогательных программ, помогающих при создании диаграмм.

Создание общей таблицы

Рисунок 1. Создание общей таблицы

Поиск решения

Рисунок 2. Поиск решения

Добавление ограничений

Рисунок 3. Добавление ограничений

Вывод целевой функции

Рисунок 4. Вывод целевой функции

Листинг программы

program PTransport;

uses

Forms,

UTransport in ‘UTransport.pas’ {Form1};

{$R *.RES}

begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.Run;

end.

object Form1: TForm1

Left = 192

Top = 107

Width = 522

Height = 332

Caption = ‘Транспортная задача 1.0 Beta’

Color = clBtnFace

Font.Charset = DEFAULT_CHARSET

Font.Color = clWindowText

Font.Height = -11

Font.Name = ‘MS Sans Serif’

Font.Style = []

OldCreateOrder = False

PixelsPerInch = 96

TextHeight = 13

object Label1: TLabel

Left = 8

Top = 8

Width = 36

Height = 13

Caption = ‘Строки’

end

object Label2: TLabel

Left = 72

Top = 8

Width = 44

Height = 13

Caption = ‘Столбцы’

end

object SpinEdit1: TSpinEdit

Left = 8

Top = 24

Width = 49

Height = 22

MaxValue = 10

MinValue = 2

TabOrder = 0

Value = 2

end

object SpinEdit2: TSpinEdit

Left = 72

Top = 24

Width = 49

Height = 22

MaxValue = 10

MinValue = 2

TabOrder = 1

Value = 2

end

object Button1: TButton

Left = 48

Top = 56

Width = 75

Height = 25

Caption = ‘Создать’

TabOrder = 2

OnClick = Button1Click

end

object Button2: TButton

Left = 144

Top = 16

Width = 50

Height = 25

Caption = ‘Ввод’

TabOrder = 3

Visible = False

OnClick = Button2Click

end

object Memo1: TMemo

Left = 144

Top = 56

Width = 185

Height = 177

ReadOnly = True

TabOrder = 4

Visible = False

end

end

unit UTransport;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Spin, Mask;

type

TForm1 = class(TForm)

SpinEdit1: TSpinEdit;

SpinEdit2: TSpinEdit;

Label1: TLabel;

Label2: TLabel;

Button1: TButton;

Button2: TButton;

Memo1: TMemo;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

c, x : Array [1..10, 1..10] of Integer;

a, b : Array [1..10] of Integer;

F : Integer;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

var

i, i1, j1, j : Byte;

s : TControl;

begin

Label1.Hide;

Label2.Hide;

SpinEdit1.Hide;

SpinEdit2.Hide;

Button1.Hide;

Button2.Show;

i:=SpinEdit2.Value;

j:=SpinEdit1.Value;

for i1:=1 to i do

for j1:=1 to j do

begin

s:=TMaskEdit.Create(Form1);

s.Width:=25;

s.Left:=i1*25;

s.Top:=j1*21;

s.Name:=’Matrix’+IntToStr(j1)+IntToStr(i1);

(TControl(s) as TMaskEdit).Text:=»;

(TControl(s) as TMaskEdit).EditMask:=’999;0; ‘;

Form1.InsertControl(s);

end;

for i1:=1 to j do

begin

s:=TMaskEdit.Create(Form1);

s.Width:=25;

s.Left:=i*25+35;

s.Top:=i1*21;

s.Name:=’Matrix’+’0’+IntToStr(i1);

(TControl(s) as TMaskEdit).Text:=»;

(TControl(s) as TMaskEdit).EditMask:=’999;0; ‘;

Form1.InsertControl(s);

end;

for j1:=1 to i do

begin

s:=TMaskEdit.Create(Form1);

s.Width:=25;

s.Left:=j1*25;

s.Top:=j*21+31;

s.Name:=’Matrix’+IntToStr(j1)+’0′;

(TControl(s) as TMaskEdit).Text:=»;

(TControl(s) as TMaskEdit).EditMask:=’999;0; ‘;

Form1.InsertControl(s);

end;

Button2.Left:=i*25+25-Button2.Width;

Button2.Top:=j*21+62;

Memo1.Show;

Memo1.Left:=i*25+75;

Memo1.Top:=21;

end;

procedure TForm1.Button2Click(Sender: TObject);

var

s : String;

i, j : Byte;

ss : TControl;

begin

for i:=0 to Form1.ComponentCount-1 do

if (Form1.Components[i] is TMaskEdit) then

begin

s:=Form1.Components[i].Name;

if (s[7]<>’0′) and (s[8]<>’0′) then

begin

ss:=(Form1.Components[i] as TControl);

c[StrToInt(s[8]),StrToInt(s[7])]:=StrToInt((ss as TMaskEdit).Text);

end

else

if (s[7]=’0′) then

begin

ss:=(Form1.Components[i] as TControl);

a[StrToInt(s[8])]:=StrToInt((ss as TMaskEdit).Text);

end

else

if (s[8]=’0′) then

begin

ss:=(Form1.Components[i] as TControl);

b[StrToInt(s[7])]:=StrToInt((ss as TMaskEdit).Text);

end

end;

s:=»;

Memo1.Lines.Add(‘Начальные данные’);

for j:=1 to SpinEdit1.Value do

begin

for i:=1 to SpinEdit2.Value do

s:=s+IntToStr(c[i, j])+’ ‘;

s:=s+IntToStr(a[j]);

Memo1.Lines.Add(s);

s:=»;

end;

for i:=1 to SpinEdit2.Value do

s:=s+IntToStr(b[i])+’ ‘;

Memo1.Lines.Add(s);

for i:=1 to SpinEdit1.Value do

for j:=1 to SpinEdit2.Value do

x[i,j]:=-1;

i:=1;

j:=1;

Repeat

if a[i]>b[j] then

begin

x[j,i]:=b[j];

a[i]:=a[i]-b[j];

b[j]:=0;

Inc(j);

end

else

begin

x[j,i]:=a[i];

b[j]:=b[j]-a[i];

a[i]:=0;

Inc(i);

end;

Until (i>SpinEdit1.Value) and (j>=SpinEdit2.Value);

Memo1.Lines.Add(»);

s:=»;

for j:=1 to SpinEdit1.Value do

begin

for i:=1 to SpinEdit2.Value do

if x[i,j]>=0 then

s:=s+IntToStr(x[i, j])+’ ‘

else

s:=s+’0 ‘;

Memo1.Lines.Add(s);

s:=»;

end;

for i:=1 to SpinEdit2.Value do

for j:=1 to SpinEdit1.Value do

if x[i,j]>0 then

F:=F+x[i,j]*c[i,j];

Memo1.Lines.Add(‘Результат: ‘+IntToStr(F));

end;

end.

Руководство пользователя

Пуск

Запуск из среды Pascal производится нажатием клавиш Ctrl+F9, а из Norton Commander нажатием клавиши Enter на файле Inform.exe.

Ввод данных

Ввод данных производится только с цифровой клавиатуры. Цифры от 0 до 9.

Просмотр результатов.

После ввода цифры (нужного пункта в меню) выводится требуемый результат и после просмотра результата нужно нажать Enter. Затем вновь появится меню на экране.

Выход из программы

Выход из программы в среде Pascal и после запуска PTransport.exe файла производится 0-ым пунктом меню.

Процедуру
необходимо адаптировать к Вашему
проекту.

  1. loExcel=CREATEOBJECT(«Excel.Application»)

  2. loExcel.displayAlerts=.F.

  1. with
    loExcel

  2. .Visible=.t.

  3. .WorkBooks.Add

  4. .Sheets(1).Select

**
Выполнение запроса для занесения в
таблицу Excel

  1. Use data1!rukovoditely

  2. SELECT
    TRIM(r_fam)+’ ‘+TRIM(r_im)+’ ‘+TRIM(r_ot),TRIM(s_fam)+’
    ‘+TRIM(s_im)+’ ‘+TRIM(s_ot),TRIM(group);

  3. From data1!rukovoditely;

  4. order
    by r_fam;

  5. Into array a

  6. rowsCount=ALEN(a,1)

  7. colsCount=ALEN(a,2)

**
Код программы получен как макрос VBA

  1. .Columns(«A:A»).ColumnWidth
    = 30

  2. .Columns(«B:B»).ColumnWidth
    = 30

  3. .Columns(«C:C»).ColumnWidth
    = 14

  4. .Range(«A1»).Select

  5. .ActiveCell.FormulaR1C1
    = «Руководитель»

  6. .Range(«B1»).Select

  7. .ActiveCell.FormulaR1C1
    = «Дипломник»

  8. .Range(«C1»).Select

  9. .ActiveCell.FormulaR1C1
    = «Группа»

  10. .Range(«D1»).Select

  1. j=2

  2. FOR
    j=2 TO rowsCount+1

  3. .Range(«A1»).Select

  4. .Activecell(j,1).FormulaR1C1=
    a[j-1,1]

  5. .Range(«B1»).Select

  6. .Activecell(j,1).FormulaR1C1=
    a[j-1,2]

  7. .Range(«C1»).Select

  8. .Activecell(j,1).FormulaR1C1
    = a[j-1,3]

  9. ENDFOR

  1. Release a

  1. Endwith

  1. CLOSE
    DATA ALL

  1. RELEASE
    TO Excel

  1. RETURN

Макрос
VBA

  1. Открыть
    Excel

  2. Включить
    VBA
    Вид

    Макросы

  3. Нажать
    Запись
    макроса

  1. Дать
    свое имя или оставить Макрос1,
    нажать ОК

  1. Установить
    ширину колонок (например А,В,С)

  2. Ввести
    наименование колонок

А

Руководители

В

Дипломник

С

Группа

Уйти
на свободную колонку

  1. Нажать
    Остановить
    запись

  1. Перейти
    по Вид
    → Макросы
    и
    нажать Выполнить

  1. Перейти
    по Вид
    → Макросы
    и
    нажать Изменить

  2. Скопировать
    код макроса

  3. Вставить
    в VFA
    с модификацией

ActiveX → Календарь

  1. Создаем
    новую форму:

  1. Выберем
    в
    Form Controls кнопку
    View Classes


    ActiveX

  1. Выберем
    из ActiveX
    календарь и разместим его на форме

  2. Создадим
    процедуру

Command1.Click

Thithform.text1.value
= dtoc (date())

  1. Создадим
    процедуру Olecontrol1.click

Процедура определения календарной даты

  1. LPARAMETERS
    cur_date

  1. cur_day
    = ALLTRIM(STR(thisform.olecontrol1.day))

  2. cur_mon
    = ALLTRIM(STR(thisform.olecontrol1.month))

  3. cur_year
    = ALLTRIM(STR(thisform.olecontrol1.year))

  1. cur_date
    = cur_day + «/» + cur_mon + «/» + cur_year

  1. thisform.text2.value
    = cur_date

Соседние файлы в папке Дополнительные лекции

  • #

    10.05.2015118.78 Кб274.doc

  • #
  • #
  • #
  • #
  • #
  • #

    10.05.2015101.38 Кб26Расписание экзаменов 4 курс 2010.xls

  • #
  • #
  • #

Аннотация: Лекция посвящена описанию частей объектной модели MS Excel, относящихся к книгам — коллекция Workbooks, объект Workbook, и к рабочим листам — коллекция Worksheets, объект Worksheet.

14.1. Коллекция Workbooks — работа с книгами

Основные операции, которые приходится выполнять при работе с книгами — это их автоматическое создание, выбор одной из открытых книг для обработки, открытие книги. Все открытые книги принадлежат коллекции Workbooks.

Практически все часто используемые методы и свойства коллекции Workbooks очень похожи на соответствующие методы и свойства коллекции Documents из объектной модели MS Word.

14.2. Методы Коллекции Workbooks

14.2.1. Add, Close, Open — стандартная работа с книгами

14-01-Excel Workbooks Add.xlsm — пример к п. 14.2.1.

  • Add — создает новую книгу. Новая книга становится активной.
  • Close — закрывает все открытые книги.
  • Open — открывает указанную книгу. Основной параметр метода — имя открываемой книги.

Например, такой код (листинг 14.1.) позволяет создать новую книгу, присвоив ссылку на нее объектной переменной.

Dim obj_Workbook As Workbook
    Set obj_Workbook = Workbooks.Add


Листинг
14.1.
Создаем новую книгу

14.2.2. OpenText, OpenXML — открытие различных файлов

Эти методы предназначены для открытия текстовых файлов ( OpenText ) и XML-файлов ( OpenXML ) в виде книг MS Excel.

14.3. Свойства коллекции Workbooks

14-02-Excel Workbooks Properties.xlsm — пример к п. 14.3.

14.3.1. Count

Возвращает количество объектов в коллекции. В данном случае — количество открытых книг.

14.3.2. Item

Позволяет обращаться к выбранному элементу (отдельной книге ) в коллекции. В качестве идентификатора книги может использоваться ее индекс или имя.

В листинге 14.2. мы сначала выводим информацию о количестве книг, а потом — отображаем имя каждой открытой книги.

MsgBox "Открыто" + Str(Workbooks.Count) + _
        " книг"
    For i = 1 To Workbooks.Count
        MsgBox Workbooks.Item(i).Name + _
            " имя открытой книги №" + Str(i)
    Next i


Листинг
14.2.
Вывод информации об открытых книгах

14.4. Объект Workbook

Workbookкнига — это аналог документа ( Document ) в Microsoft Word. Многие свойства и методы Workbook действуют аналогично свойствам объекта Document. Однако книга в объектной модели состоит из листов. Значит, для обращения к данным, хранящимся в книге, нужно сначала обратиться к листу.

14.5. Методы объекта Workbook

Методы объекта Workbook очень похожи на методы объекта Document в MS Word. Поэтому здесь мы лишь перечислим их.

14.5.1. Activate, Close, Save, SaveAs, PrintOut

  • Activate — активирует книгу
  • Close — закрывает книгу
  • Save — сохраняет книгу
  • SaveAs — сохраняет книгу с новым именем, в новом формате и т.д.
  • PrintOut — выводит книгу на печать

14.6. Свойства объекта Workbook

14.6.1. Свойства ActiveChart, ActiveSheet, Charts, Sheets, Worksheets, Styles, Names

Эти свойства возвращают различные объекты и коллекции объектов. В частности, ActiveChart возвращает активную диаграмму, ActiveSheet — активный лист книги, а Charts и Sheets возвращают, соответсвенно, коллекции листов, содержащих диаграммы, и всех листов книги. В объект Workbook входят и другие подобные коллекции — они очень похожи на коллекции, входящие в Application.

Чаще всего, работая с объектом Workbook, обращаются к коллекциям Sheets и Worksheets — ведь именно они дают доступ к рабочим листам.

14.6.2. Свойства CodeName, FullName, Name

14-03-Excel Workbook Name.xlsm — пример к п. 14.6.2.

Эти свойства возвращают различные имена книги. Так, CodeName — это имя, под которым книга видна в окне Project Explorer (обычно ЭтаКнига ). FullName — имя файла книги вместе с путем. Name — имя файла книги.

В листинге 14.3. вы можете найти пример вывода различных имен книги.

MsgBox "Кодовое имя текущей книги: " + _
        ActiveWorkbook.CodeName + Chr(13) + _
        "Имя текущей книги: " + _
        ActiveWorkbook.Name + Chr(13) + _
        "Полное имя книги: " + _
        ActiveWorkbook.FullName


Листинг
14.3.
Вывод различных имен книги

14.7. События объекта Workbook

14-04-Excel Workbook Events.xlsm — пример к п. 14.7.

В VBA-проекте, который прикреплен к книге, есть объект ЭтаКнига. Если сделать по нему двойной щелчок — будет открыто окно редактора кода, в котором, по обычной схеме, можно выбрать объект — в данном случае это Workbook, а также события, для которых автоматически будет создан обработчик.

Книги в Microsoft Excel могут реагировать на множество событий, среди них следующие, которые происходят при таких обстоятельствах:

  • Activate — при активации книги
  • BeforeClose — перед закрытием книги, если книга изменялась и должен появиться запрос на ее сохранение — происходит перед сохранением.
  • BeforePrint — перед печатью.
  • BeforeSave — перед сохранением.
  • Deactivate — при деактивации.
  • NewSheet — при добавлении нового листа в книгу.
  • Open — при открытии книги.
  • SheetActivate — при активации любого листа
  • SheetBeforeDoubleClick — после двойного щелчка в книге, до стандартной процедуры обработки.
  • SheetBeforeRightClick — перед щелчком правой кнопки мыши.
  • SheetCalculate — при пересчете листа или изменении данных, которые отображаются на диаграмме.
  • SheetChange — при изменении содержимого ячейки.
  • SheetDeactivate — при деактивации листа.
  • SheetFollowHyperlink — при щелчке по гиперссылке.
  • SheetSelectionChange — при изменении выделения.

Например, листинг 14.4. позволяет вывести в окне сообщения информацию об имени измененной ячейки, имени листа, на котором она расположена, и новом содержимом ячейки.

Private Sub Workbook_SheetChange(ByVal Sh As Object, _
    ByVal Target As Range)
    MsgBox "Вы отредактировали даные на листе: " & _
        Sh.Name & ", в ячейке " & Target.Address & _
        ". Теперь ячейка содержит следующие данные: " & _
        Target.Value
End Sub


Листинг
14.4.
Вывод информации об измененной ячейке

Здесь мы воспользовались параметрами, которые передаются в обработчик события. Параметр Sh содержит ссылку на лист, на котором произошли изменения, а Target представляет собой ссылку на измененную ячейку или диапазон.

14.8. Коллекция Worksheets

Коллекция Worksheets содержит листы открытой книги. Ее свойства и методы служат для работы с ними.

14.9. Методы коллекции Worksheets

14.9.1. Add — добавляем листы в книгу

14-05-Excel Worksheets Add.xlsm — пример к п. 14.9.1.

Позволяет добавить в книгу новый лист. Полный вызов метода выглядит так.

Add(Before, After, Count, Type)

Before (До) и After (После) позволяют задавать позицию листа относительно других листов книги (можно использовать лишь один из них), Count задает количество добавляемых листов, а Type — тип листа. Чаще всего этот метод используют без параметров.

Например, листинг 14.5. добавляет новый лист в книгу, в которой хранится макрос, содержащий этот код:

ThisWorkbook.Worksheets.Add


Листинг
14.5.
Добавляем новый лист

А так можно добавить в книгу столько листов, сколько указал пользователь в ответ на вопрос программы (листинг 14.6.).

ActiveWorkbook.Worksheets.Add _
        Count:=Val(InputBox("Введите количество листов"))


Листинг
14.6.
Добавляем в книгу указанное количество листов

Обычно листы в книгах MS Excel имеют осмысленные имена. Однако, как вы могли заметить, метод Add не предусматривает задание имени вставляемому листу, оставляя его в значении по умолчанию. Чтобы переименовать добавленный лист, вам придется пользоваться свойством Name объекта Worksheet.

14.9.2. Copy — копируем листы

14-06-Excel Worksheets Copy.xlsm — пример к п. 14.9.2.

Позволяет скопировать лист в новое место книги.

Принимает два параметра — Before и After, которые, соответственно, позволяют задать положение перемещаемого листа до или после какого-то другого листа. Например, листинг 14.7. копирует активный лист в позицию после листа с именем «Данные».

ActiveWorkbook.ActiveSheet.Copy _ 
   After:=Worksheets("Данные")


Листинг
14.7.
Создаем копию листа в пределах книги

Если метод вызвать без параметров, то будет создана новая книга, в которую будет помещена копия листа, для которого вызывался этот метод. Например, так, как в листинге 14.8.

ActiveWorkbook.ActiveSheet.Copy


Листинг
14.8.
Копируем лист в новую книгу

14.9.3. Delete, Move — удаляем и перемещаем листы

14-07-Excel Worksheets Del Mov.xlsm — пример к п. 14.9.3.

Метод Delete удаляет лист. Например, так мы удаляем первый лист в коллекции Workbooks (листинг. 14.9.)

ActiveWorkbook.Worksheets.Item(1).Delete


Листинг
14.9.
Удаляем лист

Обратите внимание на то, что в этом примере мы обращаемся к листу с помощью свойства Item коллекции Worksheets, которое позволяет работать с листом, используя индекс или имя.

Move позволяет переместить лист на новое место в книге. В качестве параметров принимает параметры Before и After, которые задают его положение до или после заданного в них листа. Например, так (листинг 14.10.) мы перемещаем активный лист в книге в позицию, предшествующую листу с именем Данные.

ActiveWorkbook.ActiveSheet.Move _ 
   Before:=Worksheets("Данные")


Листинг
14.10.
Перемещаем лист

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

Ваше имя

Какой-то текст ошибки

Email

Какой-то текст ошибки

Содержание

  1. Видеоурок
  2. Как создать выпадающий список в Экселе на основе данных из перечня
  3. Как сделать выпадающий список в Excel используя ручной ввод данных
  4. Как создать раскрывающийся список в Эксель с помощью функции СМЕЩ
  5. Как эта формула работает?
  6. Как сделать выпадающий список в Excel с подстановкой данных (с использованием функции СМЕЩ)
  7. Как создать выпадающий список в Excel с автоматической подстановкой данных
  8. Как скопировать выпадающий список в Excel
  9. Как выделить все ячейки, содержащие выпадающий список в Экселе
  10. Как сделать зависимые выпадающие списки в Excel

Видеоурок

Как создать выпадающий список в Экселе на основе данных из перечня

Представим, что у нас есть перечень фруктов:

Как сделать выпадающий список в Excel

Для создания выпадающего списка нам потребуется сделать следующие шаги:

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

Проверка данных в Excel

  • Во всплывающем окне «Проверка вводимых значений» на вкладке «Параметры» в типе данных выбрать «Список«:

Проверка вводимых значений в Excel

  • В поле «Источник» ввести диапазон названий фруктов =$A$2:$A$6 или просто поставить курсор мыши в поле ввода значений «Источник» и затем мышкой выбрать диапазон данных:

Выпадающий список в Excel

Если вы хотите создать выпадающие списки в нескольких ячейках за раз, то выберите все ячейки, в которых вы хотите их создать, а затем выполните указанные выше действия. Важно убедиться, что ссылки на ячейки являются абсолютными (например, $A$2), а не относительными (например, A2 или A$2 или $A2).

Как сделать выпадающий список в Excel используя ручной ввод данных

На примере выше, мы вводили список данных для выпадающего списка путем выделения диапазона ячеек. Помимо этого способа, вы можете вводить данные для создания выпадающего списка вручную (необязательно их хранить в каких-либо ячейках).

Например, представим что в выпадающем меню мы хотим отразить два слова «Да» и «Нет». Для этого нам потребуется:

  • Выбрать ячейку, в которой мы хотим создать выпадающий список;
  • Перейти на вкладку «Данные» => раздел «Работа с данными» на панели инструментов => выбрать пункт «Проверка данных«:

Проверка данных в Excel

  • Во всплывающем окне «Проверка вводимых значений» на вкладке «Параметры» в типе данных выбрать «Список«:

Проверка вводимых значений в Excel

  • В поле «Источник» ввести значение «Да; Нет».
  • Нажимаем «ОК«

Да - Нет

После этого система создаст раскрывающийся список в выбранной ячейке. Все элементы, перечисленные в поле «Источник«, разделенные точкой с запятой будут отражены в разных строчках выпадающего меню.

Если вы хотите одновременно создать выпадающий список в нескольких ячейках — выделите нужные ячейки и следуйте инструкциям выше.

Как создать раскрывающийся список в Эксель с помощью функции СМЕЩ

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

Например, у нас есть список с перечнем фруктов:

Как сделать выпадающий список в Excel

Для того чтобы сделать выпадающий список с помощью формулы СМЕЩ необходимо сделать следующее:

  • Выбрать ячейку, в которой мы хотим создать выпадающий список;
  • Перейти на вкладку «Данные» => раздел «Работа с данными» на панели инструментов => выбрать пункт «Проверка данных«:

Проверка данных в Excel

  • Во всплывающем окне «Проверка вводимых значений» на вкладке «Параметры» в типе данных выбрать «Список«:

Проверка вводимых значений в Excel

  • В поле «Источник» ввести формулу: =СМЕЩ(A$2$;0;0;5)
  • Нажать «ОК«

Система создаст выпадающий список с перечнем фруктов.

Как эта формула работает?

На примере выше мы использовали формулу =СМЕЩ(ссылка;смещ_по_строкам;смещ_по_столбцам;[высота];[ширина]).

Эта функция содержит в себе пять аргументов. В аргументе «ссылка» (в примере $A$2) указывается с какой ячейки начинать смещение. В аргументах «смещ_по_строкам» и «смещ_по_столбцам» (в примере указано значение «0») — на какое количество строк/столбцов нужно смещаться для отображения данных. В аргументе «[высота]» указано значение «5», которое обозначает высоту диапазона ячеек. Аргумент «[ширина]» мы не указываем, так как в нашем примере диапазон состоит из одной колонки.

Используя эту формулу, система возвращает вам в качестве данных для выпадающего списка диапазон ячеек, начинающийся с ячейки $A$2, состоящий из 5 ячеек.

Как сделать выпадающий список в Excel с подстановкой данных (с использованием функции СМЕЩ)

Если вы используете для создания списка формулу СМЕЩ на примере выше, то вы создаете список данных, зафиксированный в определенном диапазоне ячеек. Если вы захотите добавить какое-либо значение в качестве элемента списка, вам придется корректировать формулу вручную. Ниже вы узнаете, как делать динамический выпадающий список, в который будут автоматически загружаться новые данные для отображения.

Для создания списка потребуется:

  • Выбрать ячейку, в которой мы хотим создать выпадающий список;
  • Перейти на вкладку «Данные» => раздел «Работа с данными» на панели инструментов => выбрать пункт «Проверка данных«;
  • Во всплывающем окне «Проверка вводимых значений» на вкладке «Параметры» в типе данных выбрать «Список«;
  • В поле «Источник» ввести формулу: =СМЕЩ(A$2$;0;0;СЧЕТЕСЛИ($A$2:$A$100;»<>»))
  • Нажать «ОК«

В этой формуле, в аргументе «[высота]» мы указываем в качестве аргумента, обозначающего высоту списка с данными —  формулу СЧЕТЕСЛИ, которая рассчитывает в заданном диапазоне A2:A100 количество не пустых ячеек.

Примечание: для корректной работы формулы, важно, чтобы в списке данных для отображения в выпадающем меню не было пустых строк.

Telegram Logo Больше лайфхаков в нашем Telegram Подписаться

Как создать выпадающий список в Excel с автоматической подстановкой данных

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

  • Создаем список данных для отображения в выпадающем списке. В нашем случае это список цветов. Выделяем перечень левой кнопкой мыши:

выпадающий список с автоматиеской подстановкой в эксель

  • На панели инструментов нажимаем пункт «Форматировать как таблицу«:

Выпадающий список в Excel

  • Из раскрывающегося меню выбираем стиль оформления таблицы:

Выпадающий список в Excel

  •  Нажав клавишу «ОК» во всплывающем окне, подтверждаем выбранный диапазон ячеек:

Автоматическая подстановка данных в Excel

  • Затем, выделим диапазон данных таблицы для выпадающего списка и присвоим ему имя в левом поле над столбцом «А»:

Присвоить имя таблицы в Excel

Таблица с данными готова, теперь можем создавать выпадающий список. Для этого необходимо:

  • Выбрать ячейку, в которой мы хотим создать список;
  • Перейти на вкладку «Данные» => раздел «Работа с данными» на панели инструментов => выбрать пункт «Проверка данных«:

Проверка данных в Excel

  • Во всплывающем окне «Проверка вводимых значений» на вкладке «Параметры» в типе данных выбрать «Список«:

Проверка вводимых значений в Excel

  • В поле источник указываем =»название вашей таблицы». В нашем случае мы ее назвали «Список«:

Поле источник автоматическая подстановка данных в выпадающий список Эксель

  • Готово! Выпадающий список создан, в нем отображаются все данные из указанной таблицы:

Выпадающий список в Excel

  • Для того чтобы добавить новое значение в выпадающий список — просто добавьте в следующую после таблицы с данными ячейку информацию:

Автоматическая подстановка данных в Excel

  • Таблица автоматически расширит свой диапазон данных. Выпадающий список соответственно пополнится новым значением из таблицы:

Автоматическая подстановка данных в выпадающий список эксель

Как скопировать выпадающий список в Excel

В Excel есть возможность копировать созданные выпадающие списки. Например, в ячейке А1 у нас есть выпадающий список, который мы хотим скопировать в диапазон ячеек А2:А6.

Выпадающий список в Excel

Для того чтобы скопировать выпадающий список с текущим форматированием:

  • нажмите левой клавишей мыши на ячейку с выпадающим списком, которую вы хотите скопировать;
  • нажмите сочетание клавиш на клавиатуре CTRL+C;
  • выделите ячейки в диапазоне А2:А6, в которые вы хотите вставить выпадающий список;
  • нажмите сочетание клавиш на клавиатуре CTRL+V.

Так, вы скопируете выпадающий список, сохранив исходный формат списка (цвет, шрифт и.т.д). Если вы хотите скопировать/вставить выпадающий список без сохранения формата, то:

  • нажмите левой клавишей мыши на ячейку с выпадающим списком, который вы хотите скопировать;
  • нажмите сочетание клавиш на клавиатуре CTRL+C;
  • выберите ячейку, в которую вы хотите вставить выпадающий список;
  • нажмите правую кнопку мыши => вызовите выпадающее меню и нажмите «Специальная вставка«;

выпадающий список в excel

  • В появившемся окне в разделе «Вставить» выберите пункт «условия на значения«:

Выпадающий список в Excel

  • Нажмите «ОК«

После этого, Эксель скопирует только данные выпадающего списка, не сохраняя форматирование исходной ячейки.

Как выделить все ячейки, содержащие выпадающий список в Экселе

Иногда, сложно понять, какое количество ячеек в файле Excel содержат выпадающие списки. Есть простой способ отобразить их. Для этого:

  • Нажмите на вкладку «Главная» на Панели инструментов;
  • Нажмите «Найти и выделить» и выберите пункт «Выделить группу ячеек«:

Как найти ячейки с выпадающим списком в Excel

  • В диалоговом окне выберите пункт «Проверка данных«. В этом поле есть возможность выбрать пункты «Всех» и «Этих же«. «Всех» позволит выделить все выпадающие списки на листе. Пункт «этих же» покажет выпадающие списки схожие по содержанию данных в выпадающем меню. В нашем случае мы выбираем «всех«:

Выпадающий список в Excel. Как найти все списки

  • Нажмите «ОК«

Нажав «ОК«, Excel выделит на листе все ячейки с выпадающим списком. Так вы сможете привести за раз все списки к общему формату, выделить границы и.т.д.

Как сделать зависимые выпадающие списки в Excel

Иногда нам требуется создать несколько выпадающих списков, причем, таким образом, чтобы, выбирая значения из первого списка, Excel определял какие данные отобразить во втором выпадающем списке.

Предположим, что у нас есть списки городов двух стран Россия и США:

Функция Indirect (ДВССЫЛ) в Excel

Для создания зависимого выпадающего списка нам потребуется:

  • Создать два именованных диапазона для ячеек «A2:A5» с именем “Россия” и для ячеек «B2:B5» с названием “США”. Для этого нам нужно выделить весь диапазон данных для выпадающих списков:

зависимый выпадающий список в Excel

  • Перейти на вкладку «Формулы» => кликнуть в разделе «Определенные имена» на пункт «Создать из выделенного«:

Зависимые выпадающие списки в Excel

  • Во всплывающем окне «Создание имен из выделенного диапазона» поставьте галочку в пункт «в строке выше«. Сделав это, Excel создаст два именованных диапазона «Россия» и «США» со списками городов:

зависимый-выпадающий-список-в-excel

  • Нажмите «ОК«
  • В ячейке «D2» создайте выпадающий список для выбора стран «Россия» или «США». Так, мы создадим первый выпадающий список, в котором пользователь сможет выбрать одну из двух стран.

функция INDIRECT (ДВССЫЛ) в Excel

Теперь, для создания зависимого выпадающего списка:

  • Выделите ячейку E2 (или любую другую ячейку, в которой вы хотите сделать зависимый выпадающий список);
  • Кликните по вкладке “Данные” => “Проверка данных”;
  • Во всплывающем окне «Проверка вводимых значений» на вкладке «Параметры» в типе данных выберите «Список«:

Проверка вводимых значений в Excel

  • В разделе “Источник” укажите ссылку: =INDIRECT(D2) или =ДВССЫЛ(D2);

Как создать зависимый выпадающий список в Excel

  • Нажмите «ОК«

выпадающий-список-в-excel-6

Теперь, если вы выберите в первом выпадающем списке страну «Россия», то во втором выпадающем списке появятся только те города, которые относятся к этой стране. Также и в случае, когда выбираете «США» из первого выпадающего списка.

Группа: Пользователи

Ранг: Прохожий

Сообщений: 3


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Привет
Имеется программа написанная в Excel с макросами, расчетов там на несколько листов, много логики, сравнений, одна ячейка рассчитывается по формуле с данными по другой, та в свою очередь по третей…в общем неудобно так искать и выводить ф-лы. Как их можно вытащить в листинг или что-то подобное, чтобы было нагляднее, проще вытаскивать формулы?

спасибо

Чем люди занимаются в офисах? Довольно типовой вариант: собрать из нескольких источников некие данные, произвести некоторые расчёты, проконтролировать какие-то товарно-денежно-сырьевые операции или запланировать эти операции по результатам расчётов, ну и, само собой, взять ответственность за свои расчёты, контроли, прогнозы. В подавляющем большинстве случае всё это делается в Excel.

Так вот — в самом начале этих типовых операций, в процессе объединения нескольких источников данных, как правило, возникает задача выработать базовый список чего-то (материалов, товаров, операций), от которого потом приходится «плясать». Приведу пример из моей недавней статьи, где мы планировали снабжение производства расходными материалами. Для планирования закупок расходных материалов мы должны совместить данные из производственного плана и данные со складов расходных материалов. Эти два источника данных в реальной жизни никогда не совпадут друг с другом. Всегда будут какие-то позиции, которые есть на складах, но они пока (или уже) не участвуют в производстве, а также возможны ситуации, что появился новый расходный материал, который ещё ни разу не закупался, но включен в производственный план. То есть нам позарез нужен базовый список расходных материалов, который бы включал в себя все варианты материалов, которые есть в обоих источниках. Без повторений, отсортированный — всё как положено.

Совершенно точно вам заявляю, что подобные базовые списки формируются в подавляющем большинстве случаев в полуручном режиме. Обычно происходит так: в начале процесса вы при помощи сводных таблиц или руками формируете стартовый базовый список, потом его при помощи формул ВПР выверяете, дополняете, и вот — у вас есть СТАТИЧЕСКИЙ базовый список, который вы постоянно теперь будете сверять с источниками данных на предмет, а не появились ли новые позиции. Вот на такие бессмысленные вещи люди и тратят порой до трети своего рабочего времени…

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

Автоматизация создания базового списка

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

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

У нас будет 3 источника данных, на основе которых мы будем строить базовый список. Данные текстовые. В каждой таблице — один единственный столбец, содержащий мужские имена. Во всёх трёх таблицах разное количество строк, имена пересекаются произвольно и могут произврольно повторяться в любых сочетаниях. Мы не предъявляем никаких предварительных условий, кроме того, что данные текстовые и, что мы примерно знаем, с каким количеством строк мы будем иметь дело (формулы должны быть протянуты на достаточную длинну с запасом).

Файл примера

Скачать

Шаг 1 — Оформляем исходные данные

Как обычно, все три исходные таблицы на листе Data делаем умными и даём им идентификаторы tblOne, tblTwo и tblThree.

Шаг 2 — Создаём объединенную таблицу

На листе Trick создаём объединенную умную таблицу tblCommon. Она состоит из трёх столбцов: таблица, строка, значение. Индекс таблицы для столбца Таблица — число от 1 до 3, — извлекаем из вспомогательной таблицы tblStep при помощи формулы ВПР:

=ЕСЛИОШИБКА( ВПР( СТРОКА(1:1); tblStep; 2 ); 0 )

Конструкцию СТРОКА(1:1) мы уже обсуждали тут. Данное использование ВПР для диапазонного поиска обсуждалось здесь. В случае, если ВПР вернёт #Н/Д, то ЕСЛИОШИБКА подставит ноль.

Таблица tblStep адресует к диапазону E1:F5, о котором стоит рассказать подробно. Дело в том, что нам для создания объединенной таблицы — кровь из носа — необходимо знать количество строк в исходных таблицах. Их я легко получаю в ячейках E2:E4 при помощи формулы ЧСТРОК. Для E2 это, к примеру:

=ЧСТРОК( tblOne )

Далее на ячейку E2 я должен был бы сослаться в таблице tblStep в столбце Порог. Однако, если мы так сделаем, то наша таблица будет так тормозить, что между калькуляциями формул можно будет выкуривать по маленькой цигарке. Дело в том, что формула ЧСТРОК летучая (volatile) и пересчитывается при любом нашем шевелении в Excel. А поскольку на E2:E4 завязано буквально всё, то в Excel при любом действии начинается цепная реакция пересчётов формул, что реально занимает массу времени, и с файлом работать при автоматическом пересчёте формул становится практически невозможно.

Поэтому мы идём на хитрость. Для ячеек E2:E4 (заголовок Живые) я создаю двойников в F2:F4 (заголовок Мёртвые). Если на E2 у меня ссылается именованный диапазон rngLiveCountOne, то на F2 — ИД rngDeadCountOne. Двойники не содержат формул, поэтому необходимо следить, чтобы значения в Мёртвых (Dead) диапазонах всегда были равны значениям из Живых (Live) диапазонов. Сами мы следить не хотим, значит поручим это макросу (ниже будет листинг). Ссылаясь в формулах на мёртвые ячейки, я изолирую летучие ячейки, и мой файл начинает при пересчётах вести себя адекватно. Запомните этот приём, он может вам пригодиться.

Формула для столбца Строка вычисляет номер строки таблицы:

=ЕСЛИОШИБКА( СТРОКА(1:1) — ВПР( СТРОКА(1:1); tblStep; 1 ) + 1; 0 )

Теперь мы знаем, из какой таблицы мы будем извлекать данные и из какой строки этой таблицы. Напоминаю, что на этом этапе мы просто берём 3 исходные таблицы tblOne, tblTwo и tblThree и складываем из них одну большую таблицу. Формула для строки Значение:

=ЕСЛИ( [@Таблица] > 0; ИНДЕКС( ВЫБОР( [@Таблица]; tblOne; tblTwo; tblThree); [@Строка] ); «» )

ВЫБОР( [@Таблица]; tblOne; tblTwo; tblThree) — возвращает нам нужную таблицу по её индексу в поле [@Таблица]. Если вы не знакому со структурными ссылками умных таблиц (то что вы видите в квадратных скобках), то почитать о них можно тут. По формуле ИНДЕКС у меня также есть исчерпывающая статья.

Проследнее, что необходимо сделать, это накинуть ИД на получившийся диапазон столбца Значение таблицы tblCommon. Это будет ИД rngCommon:

=tblCommon[ [#Заголовки]; [Значение]]:ИНДЕКС( tblCommon[Значение]; СЧЁТЕСЛИ( tblCommon[Значение]; «*?») )

Данный ИД нам нужен с заголовком, так как мы будем на его основе строить сводную таблицу, а также нам не нужны пустые значения снизу таблицы. Примите во внимание, что конструктция СЧЁТЕСЛИ(tblCommon[Значение];»*?») работает только с текстовыми значениями, для чисел используйте нечто типа СЧЁТЕСЛИ(tblCommon[Значение];»>0″)+1. СЧЁТЗ использовать нельзя, так как в ячейках везде формулы.

Шаг 3 — Перекладываем на сводную таблицу основную работу

Скомпоновав все таблицы в одну, мы со спокойным сердцем натравливаем на неё сводную таблицу, чтобы она нам сделала группировку, сортировку и фильтрацию (если бы нам это надо было). Кто-то скажет, что тоже самое можно было бы сделать при помощи формул-массивов. Наверное, можно. Я не фанат формул-массивов, так как вещь это очень специфическая и на больших объёмах данных так и вовсе бесполезная. Я, в первую очередь, как тренер, не испытываю никакого энтузиазма, глядя на формулу размером в полстраницы, потому что я знаю, что ЕЁ я никогда и никому не смогу объяснить (да и сам забуду через неделю).

Сводная таблица элементарна — единственное поле в области СТРОКИ в макете сводной таблицы. Кроме этого надо отключить ИТОГИ:

На сводную таблицу я также привычно накидываю ИД rngResult, так как именно этот ИД и будет нашим конечным продуктом.

=Trick!$H$2:ИНДЕКС( Trick!$H:$H; СЧЁТЗ( Trick!$H:$H ) )

Стандартнейшая формула.

Шаг 4 — Небольшой макрос

В качестве сервисной функции я прикрепляю к событию Activate листа Result следующий макрос:

Данный макрос следит, чтобы наши «мёртвые» диапазоны всегда были в точности равны «живым» диапазонам. Кроме этого, макрос обновляет сводную таблицу. То есть, переходя на лист Result, вы можете быть уверены, что ваш базовый список содержит корректные данные.

Наслаждаемся результатом

На листе Result построена умная таблица tblWork при помощи ИД rngResult. Столбец Flag сигнализирует нам о том, не кончились ли строки в базовой таблице (значение 1 — означает, что не кончились, и его удобно проверять в формулах =ЕСЛИ([@Flag];»Do something»;»Do nothing»). Формула для столбца Name проста и изящна:

=ЕСЛИ( [@Flag]; ИНДЕКС( rngResult; СТРОКА(1:1) ); «» )

а столбцы One, Two, Three просто иллюстрируют, как наш базовый список связан с исходными таблицами. Я использовал формулы вида:

=ЕСЛИ( [@Flag]; СЧЁТЕСЛИМН( tblOne; [@Name] ); «» )

Если вы не знакомы с великолепными формулами СЧЁТЕСЛИМН, СУММЕСЛИМН, СРЗНАЧЕСЛИМН, то очень рекомендую их изучить.

Общая схема трансформации данных:

Выводы

Самое главное, чему мы сейчас научились — это использовать сводную таблицу в качестве мощного промежуточного инструмента, не требующего никакого внимания от конечного пользователя. Лист Trick даже может быть скрыт без каких-либо последствий. Мы формулами подготовили ИД, на основе которого строилась сводная таблица, и мы формулами же сфотографировали через другой ИД (+ немного VBA) результат деятельности сводной таблицы. Такое использование сводных таблиц открывает перед нами богатейшие возможности по манипулированию данными.

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

Читайте также:

  • 7 причин полюбить именованные диапазоны

  • Усовершенствованные динамические именованные диапазоны

  • В помощь аналитику (часть 1)

  • В помощь аналитику (часть 2)

  • Ценные советы начинающим аналитикам

  • Наиважнейшая формула Excel

  • Элементы планирования работы производства и складов

Под выпадающим списком понимается содержание в одной ячейке нескольких значений. Когда пользователь щелкает по стрелочке справа, появляется определенный перечень. Можно выбрать конкретное.

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

Создание раскрывающегося списка

Путь: меню «Данные» — инструмент «Проверка данных» — вкладка «Параметры». Тип данных – «Список».

Создание выпадающего списка.

Ввести значения, из которых будет складываться выпадающий список, можно разными способами:

  1. Вручную через «точку-с-запятой» в поле «Источник».
  2. Ввод значений.

  3. Ввести значения заранее. А в качестве источника указать диапазон ячеек со списком.
  4. Проверка вводимых значений.

  5. Назначить имя для диапазона значений и в поле источник вписать это имя.

Имя диапазона.
Раскрывающийся список.

Любой из вариантов даст такой результат.



Выпадающий список в Excel с подстановкой данных

Необходимо сделать раскрывающийся список со значениями из динамического диапазона. Если вносятся изменения в имеющийся диапазон (добавляются или удаляются данные), они автоматически отражаются в раскрывающемся списке.

  1. Выделяем диапазон для выпадающего списка. В главном меню находим инструмент «Форматировать как таблицу».
  2. Форматировать как таблицу.

  3. Откроются стили. Выбираем любой. Для решения нашей задачи дизайн не имеет значения. Наличие заголовка (шапки) важно. В нашем примере это ячейка А1 со словом «Деревья». То есть нужно выбрать стиль таблицы со строкой заголовка. Получаем следующий вид диапазона:
  4. Выпадающий список.

  5. Ставим курсор в ячейку, где будет находиться выпадающий список. Открываем параметры инструмента «Проверка данных» (выше описан путь). В поле «Источник» прописываем такую функцию:

Ввод значения в источник.

Протестируем. Вот наша таблица со списком на одном листе:

Список и таблица.

Добавим в таблицу новое значение «елка».

Добавлено значение елка.

Теперь удалим значение «береза».

Удалено значение береза.

Осуществить задуманное нам помогла «умная таблица», которая легка «расширяется», меняется.

Теперь сделаем так, чтобы можно было вводить новые значения прямо в ячейку с этим списком. И данные автоматически добавлялись в диапазон.

Ввод данных из списка.

  1. Сформируем именованный диапазон. Путь: «Формулы» — «Диспетчер имен» — «Создать». Вводим уникальное название диапазона – ОК.
  2. Создание имени.

  3. Создаем раскрывающийся список в любой ячейке. Как это сделать, уже известно. Источник – имя диапазона: =деревья.
  4. Снимаем галочки на вкладках «Сообщение для ввода», «Сообщение об ошибке». Если этого не сделать, Excel не позволит нам вводить новые значения.
  5. Сообщение об ошибке.

  6. Вызываем редактор Visual Basic. Для этого щелкаем правой кнопкой мыши по названию листа и переходим по вкладке «Исходный текст». Либо одновременно нажимаем клавиши Alt + F11. Копируем код (только вставьте свои параметры).
  7. Private Sub Worksheet_Change(ByVal Target As Range)
     
    Dim lReply As Long
     
        If Target.Cells.Count > 1 Then Exit Sub
        If Target.Address = "$C$2" Then
         If IsEmpty(Target) Then Exit Sub
           If WorksheetFunction.CountIf(Range("Деревья"), Target) = 0 Then
              lReply = MsgBox("Добавить введенное имя " & _
                             Target & " в выпадающий список?", vbYesNo + vbQuestion)
              If lReply = vbYes Then
                  Range("Деревья").Cells(Range("Деревья").Rows.Count + 1, 1) = Target
              End If
           End If
         End If
    End Sub
     
  8. Сохраняем, установив тип файла «с поддержкой макросов».
  9. Сообщение об ошибке.

  10. Переходим на лист со списком. Вкладка «Разработчик» — «Код» — «Макросы». Сочетание клавиш для быстрого вызова – Alt + F8. Выбираем нужное имя. Нажимаем «Выполнить».

Макрос.

Когда мы введем в пустую ячейку выпадающего списка новое наименование, появится сообщение: «Добавить введенное имя баобаб в выпадающий список?».

Нажмем «Да» и добавиться еще одна строка со значением «баобаб».

Выпадающий список в Excel с данными с другого листа/файла

Когда значения для выпадающего списка расположены на другом листе или в другой книге, стандартный способ не работает. Решить задачу можно с помощью функции ДВССЫЛ: она сформирует правильную ссылку на внешний источник информации.

  1. Делаем активной ячейку, куда хотим поместить раскрывающийся список.
  2. Открываем параметры проверки данных. В поле «Источник» вводим формулу: =ДВССЫЛ(“[Список1.xlsx]Лист1!$A$1:$A$9”).

Имя файла, из которого берется информация для списка, заключено в квадратные скобки. Этот файл должен быть открыт. Если книга с нужными значениями находится в другой папке, нужно указывать путь полностью.

Как сделать зависимые выпадающие списки

Возьмем три именованных диапазона:

Три именованных диапазона.

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

  1. Создадим первый выпадающий список, куда войдут названия диапазонов.
  2. Список диапазонов.

  3. Когда поставили курсор в поле «Источник», переходим на лист и выделяем попеременно нужные ячейки.
  4. Таблица со списком.

  5. Теперь создадим второй раскрывающийся список. В нем должны отражаться те слова, которые соответствуют выбранному в первом списке названию. Если «Деревья», то «граб», «дуб» и т.д. Вводим в поле «Источник» функцию вида =ДВССЫЛ(E3). E3 – ячейка с именем первого диапазона.
  6. Второй раскрывающийся список.

    Выбор нескольких значений из выпадающего списка Excel

    Бывает, когда из раскрывающегося списка необходимо выбрать сразу несколько элементов. Рассмотрим пути реализации задачи.

    1. Создаем стандартный список с помощью инструмента «Проверка данных». Добавляем в исходный код листа готовый макрос. Как это делать, описано выше. С его помощью справа от выпадающего списка будут добавляться выбранные значения.
    2. Private Sub Worksheet_Change(ByVal Target As Range)
          On Error Resume Next
          If Not Intersect(Target, Range("Е2:Е9")) Is Nothing And Target.Cells.Count = 1 Then
              Application.EnableEvents = False
              If Len(Target.Offset(0, 1)) = 0 Then
                  Target.Offset(0, 1) = Target
              Else
                  Target.End(xlToRight).Offset(0, 1) = Target
              End If
              Target.ClearContents
              Application.EnableEvents = True
          End If
      End Sub
       
    3. Чтобы выбранные значения показывались снизу, вставляем другой код обработчика.
    4. Private Sub Worksheet_Change(ByVal Target As Range)
          On Error Resume Next
          If Not Intersect(Target, Range("Н2:К2")) Is Nothing And Target.Cells.Count = 1 Then
              Application.EnableEvents = False
              If Len(Target.Offset(1, 0)) = 0 Then
                  Target.Offset(1, 0) = Target
              Else
                  Target.End(xlDown).Offset(1, 0) = Target
              End If
              Target.ClearContents
              Application.EnableEvents = True
          End If
      End Sub
       
    5. Чтобы выбираемые значения отображались в одной ячейке, разделенные любым знаком препинания, применим такой модуль.

    6. Private Sub Worksheet_Change(ByVal Target As Range)
          On Error Resume Next
          If Not Intersect(Target, Range("C2:C5")) Is Nothing And Target.Cells.Count = 1 Then
              Application.EnableEvents = False
              newVal = Target
              Application.Undo
              oldval = Target
              If Len(oldval) <> 0 And oldval <> newVal Then
                  Target = Target & "," & newVal
              Else
                  Target = newVal
              End If
              If Len(newVal) = 0 Then Target.ClearContents
              Application.EnableEvents = True
          End If
      End Sub

    Не забываем менять диапазоны на «свои». Списки создаем классическим способом. А всю остальную работу будут делать макросы.

    Выпадающий список с поиском

    1. На вкладке «Разработчик» находим инструмент «Вставить» – «ActiveX». Здесь нам нужна кнопка «Поле со списком» (ориентируемся на всплывающие подсказки).
    2. Вставить ActiveX.

    3. Щелкаем по значку – становится активным «Режим конструктора». Рисуем курсором (он становится «крестиком») небольшой прямоугольник – место будущего списка.
    4. Элемент ActiveX.

    5. Жмем «Свойства» – открывается перечень настроек.
    6. Свойства ActiveX.

    7. Вписываем диапазон в строку ListFillRange (руками). Ячейку, куда будет выводиться выбранное значение – в строку LinkedCell. Для изменения шрифта и размера – Font.

    Скачать пример выпадающего списка

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

Понравилась статья? Поделить с друзьями:
  • Листбокс excel что это
  • Лист это в excel определение
  • Лист прогноза excel онлайн
  • Лист учета рабочего времени бланк скачать excel на одном листе
  • Лист прогноза excel как включить