Проверка на запущенный excel

Пример определения запущен-ли Excel.
Вместо ‘XLMAIN’ можно подставить имя главного
окна Outlook (я его не знаю).

Visual BasicВыделить код

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

Declare Function FindWindow Lib ‘user32’ Alias _

‘FindWindowA’ (ByVal lpClassName As String, _

               ByVal lpWindowName As Long) As Long

Function DetectExcel() As Long

‘ Procedure dectects a running Excel and registers it.

  Const WM_USER = 1024

   Dim hWnd As Long

‘ If Excel is running this API call returns its handle.

  hWnd = FindWindow(‘XLMAIN’, 0)

  If hWnd = 0 Then   ‘ 0 means Excel not running.

     Exit Function

   Else

   ‘ Excel is running so use the SendMessage API

   End If

End Function

Да напрямую:

Visual BasicВыделить код

1

If Tasks.Exists(Name:=’Microsoft Outlook’) = True Then …

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

Visual BasicВыделить код

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

#If Win64 Then

Private Declare PtrSafe Function FindWindow Lib «user32» Alias «FindWindowA» (ByVal _

lpClassName As String, ByVal lpWindowName As String) As LongLong

#Else

Private Declare PtrSafe Function FindWindow Lib «user32» Alias «FindWindowA» (ByVal _

lpClassName As String, ByVal lpWindowName As String) As Long

#End If

Private Sub Workbook_Open()

    findoutlook = FindWindow(«OpusApp», vbNullString)

        If findoutlook Then

            Sheets(«intro»).Activate

            Cells(1, 1).Select

        Else

            MsgBox «ВНИМАНИЕ! Microsoft Outlook не запущен! Перед открытием программы запустите Microsoft Outlook.»

            ThisWorkbook.Close True

        End If

End Sub

Уважаемые, подскажите, пожалуйста. Я делаю так:

Код: Выделить всё
Set xl = CreateObject("Excel.Sheet")
xl.Application.Visible = True

При этом, если этот код уже выполнялся, Excel после этого не закрыли и он уже, так сказать Visible, то получается ошибка ( пишет много-много цифр и Automation error), что в общем-то логично. :?

Вопрос в том, как проверить, что там в Excel’е уже что-то открыто и в таком случае просто создать в нем новый лист (или книгу, все равно). :?:
Дело может и не совсем в этом. Проверила, если Excel открыть вручную (просто запустить), то такой код добавляет все без ошибок. Значит я что-то неправильно открываю (объявляю)? :shock: Переменная

Код: Выделить всё
Global xl As Object

В чем может быть дело?

I use extensive Excel-Word linking, updated manually with VBA code. If the Excel file is not open, Word attempts to open it, warns that opening it again is trouble, requires a dialog box be answered, then go to the next link and starts again. Since there are usually 100 links, this is a big problem.

I found simple VBA code that calls a function to check if Excel is running.

    Dim sApp As String
    sApp = "Excel.Application"
    If IsAppRunning(sApp) = True Then
        MsgBox "Excel is Running, continue" & SourceFileName
    Else
        MsgBox "Excel is NOT Running, abort"
        Exit Sub
    End If

I want to check if the RIGHT Excel file is open. The «right» file will have the same name as the Word file, e.g., MyDocSample.doc will be linked to MyDocSample.xls.

If MyDocSample.xls is open, then continue, if not, a warning should be posted saying «MyDocSample.xls» is not open, and offer an Abort selection.

Нужно узнать открыт ли в Excele нужный мне файл или нет. Если открыт то активизировать его и работать с ним. А вообще даже не знаю как проверить запущен ли сам Excel.

Проблема в том, что vba крутится под другим приложением, хотя наверно это не проблема.

8 ответов

18K

06 июля 2007 года

pavel55

79 / / 14.05.2007

Я бы сделал бы так

Код:

Sub Макрос1()
    Dim WB As Workbook
    Dim myWorkBook As String

   
    myWorkBook = «Бюджет.xls» ‘задаём имя искомой книги
    On Error Resume Next
        Windows(myWorkBook).Activate
    If Err.Number = 9 Then
        MsgBox «Книга » & myWorkBook & » не открыта!», , «»
    End If
    On Error GoTo 0
End Sub

или так

Код:

Sub Макрос2()
    Dim WB As Workbook
    Dim myWorkBook As String

   
    myWorkBook = «Бюджет.xls» ‘задаём имя искомой книги
    For Each WB In Application.Workbooks
        If WB.Name = myWorkBook Then
            Windows(WB.Name).Activate
            End
        End If
    Next
    If ActiveWorkbook.Name <> myWorkBook Then MsgBox «Книга » & myWorkBook & » не открыта!», , «»
End Sub

10K

09 июля 2007 года

NaeR

6 / / 06.04.2005

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

пробовал на двух машинах 2k sp4 и xp sp2. excel 2003(11).

31K

12 июля 2007 года

migor69

1 / / 09.07.2007

dim EX as Excel.Application
Dim WB As Workbook
………………………………
………………………….
открытие книги…
……работа
закрытие и сохранение книги
EX.Quit..Закрытие Excel …………Иначе книга остается открытой

15K

16 июля 2007 года

vkodor

41 / / 04.07.2006

Код:

Public Function WorkbookIsOpen(wbname) As Boolean
    ‘проверка открыт фаил или нет
    Dim x
    On Error Resume Next
    Set x = Workbooks(wbname)
    If Err = 0 Then WorkbookIsOpen = True
    Set x = Nothing
End Function

10K

19 июля 2007 года

NaeR

6 / / 06.04.2005

проблема в том что всеми этими способами я не вижу была ли открыта книга до того как была запущена моя программа. а это очень важно т.к. книга повторно откроется только для чтения, а мне надо писать в неё данные каждые 2 часа. запретить открывать книгу я тоже не могу т.к. она может быть нужна для просмотра данных.

может есть какие другие способы, через winapi или еще как, чтобы можно было 100% определить открыта ли книга и если да то писать в неё

6.4K

19 июля 2007 года

Host

122 / / 22.09.2005

проблема в том что всеми этими способами я не вижу была ли открыта книга до того как была запущена моя программа…

Проверяй на существование экземпляр Excel.

Код:

Function CheckWorksheet(strName As String) As Boolean

 
   On Error Resume Next
   Dim pExcel As Excel.Application
   ‘Получаем объект
   Set pExcel = GetObject(class:=»Excel.Application»)

 
   If Not pExcel Is Nothing Then
      Dim wb As Workbook

 
      ‘Проверяем наличие открытой книги
      Set wb = pExcel.Workbooks(strName)
      If Not wb Is Nothing Then
         CheckWorksheet = True
      Else
         CheckWorksheet = False
      End If
      Exit Function
   End If
   CheckWorksheet = False
End Function

10K

20 июля 2007 года

NaeR

6 / / 06.04.2005

Host спасибо! похоже твой вариант работает. я уже было чуть не отчаялся

10K

21 июля 2007 года

NaeR

6 / / 06.04.2005

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

Сообщение от mr-Crocodile
1) поставь в Excel автосохранение

Пока что по некоторым причинам это делать не стоит, но в будущем может пригодиться. При создании темы я забыл про определенные обстоятельства. Бланки Excel на данном этапе лучше не сохранять и не закрывать, а то будут проблемы…

Сообщение от qwertehok
не нужно придумывать костыли — видишь что открыт эксель — пиши сообщение пользователю и все

В итоге так и сделал…

Сообщение от mr-Crocodile
3) если возникают проблемы с распределённой работой, то, может быть, Excel тебе не очень и подходит то?

Без Excel обойтись не получится, так как он содержит приличное количество хитромудрого кода VBA. Excel используется в качестве базы данных, которая редактируется вручную (не уверен в том, что это правильно, но таким образом уже много лет работаем). А моя задача состоит в том, чтобы сделать Excel редактируемым через приложение, написанное на Delphi, потом что на VBA в принципе невозможно реализовать решение поставленных задач, в списке которых связь с 1С и фискальным регистратором.

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

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
///////////////////////////////////////////////////////////////////////////////
{Этот код возможен благодаря модулям Psapi и tlhelp32. Нужен он для быстрого
отслеживания процесса по имени в диспетчере задач.}
procedure CreateWin9xProcessList(List: TstringList);
var 
   hSnapShot: THandle; 
   ProcInfo: TProcessEntry32; 
begin 
   if List = nil then Exit; 
   hSnapShot := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0);
   if (hSnapShot <> THandle(-1)) then 
   begin 
     ProcInfo.dwSize := SizeOf(ProcInfo); 
     if (Process32First(hSnapshot, ProcInfo)) then 
     begin 
       List.Add(ProcInfo.szExeFile); 
       while (Process32Next(hSnapShot, ProcInfo)) do 
         List.Add(ProcInfo.szExeFile);
     end; 
     CloseHandle(hSnapShot); 
   end; 
end; 
 
procedure CreateWinNTProcessList(List: TstringList); 
var 
   PIDArray: array [0..1023] of DWORD;
   cb: DWORD; 
   I: Integer; 
   ProcCount: Integer; 
   hMod: HMODULE; 
   hProcess: THandle; 
   ModuleName: array [0..300] of Char; 
begin 
   if List = nil then Exit;
   EnumProcesses(@PIDArray, SizeOf(PIDArray), cb); 
   ProcCount := cb div SizeOf(DWORD); 
   for I := 0 to ProcCount - 1 do 
   begin 
     hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or 
       PROCESS_VM_READ, 
       False, 
       PIDArray[I]);
     if (hProcess <> 0) then 
     begin 
       EnumProcessModules(hProcess, @hMod, SizeOf(hMod), cb); 
       GetModuleFilenameEx(hProcess, hMod, ModuleName, SizeOf(ModuleName)); 
       List.Add(ModuleName); 
       CloseHandle(hProcess); 
     end; 
   end;
end; 
 
procedure GetProcessList(var List: TstringList); 
var 
   ovi: TOSVersionInfo; 
begin 
   if List = nil then Exit; 
   ovi.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
   GetVersionEx(ovi); 
   case ovi.dwPlatformId of 
     VER_PLATFORM_WIN32_WINDOWS: CreateWin9xProcessList(List); 
     VER_PLATFORM_WIN32_NT: CreateWinNTProcessList(List); 
   end 
end; 
 
function EXE_Running(FileName: string; bFullpath: Boolean): Boolean;
var 
   i: Integer; 
   MyProcList: TstringList; 
begin 
   MyProcList := TStringList.Create; 
   try 
     GetProcessList(MyProcList); 
     Result := False;
     if MyProcList = nil then Exit; 
     for i := 0 to MyProcList.Count - 1 do 
     begin 
       if not bFullpath then 
       begin 
         if CompareText(ExtractFileName(MyProcList.Strings[i]), FileName) = 0 then 
           Result := True 
       end
       else if CompareText(MyProcList.strings[i], FileName) = 0 then Result := True; 
       if Result then Break; 
     end; 
   finally 
     MyProcList.Free; 
   end; 
end;
///////////////////////////////////////////////////////////////////////////////
 
procedure TForm1.FormCreate(Sender: TObject);
begin
{Отслеживаем процесс в диспетчере задач с помощью описанной ранее функции,
после чего запускаем таймер, который запускает эту же функцию. Лучше использовать
этот способ, так как если таймер будет изначально активен, то это позволит
форме открыться, что нежелательно.}
if EXE_Running('EXCEL.EXE', False) then
  begin
  beep;
  Form2.ShowModal; // Показ модальной формы.
  end;
Timer2.Enabled := true;
end;
 
procedure TForm1.Timer2Timer(Sender: TObject);
begin
if EXE_Running('EXCEL.EXE', False) then
  begin
  Timer2.Enabled := false;
  beep;
  Form2.ShowModal; // Показ модальной формы.
  end;
end;

А в Excel, находящийся в режиме редактирования, лучше посылать Enter, а не Esc, потому что в последнем случае ячейка с активным курсором очищается.

Спасибо всем за обсуждение и полезные советы.

Добавлено через 12 минут
Ах да, перед

Delphi
1
Form2.ShowModal; // Показ модальной формы.

забыл

Delphi
1
if (not Assigned(Form2)) then Form2 := TForm2.Create(Self); //Проверка существования Формы (если нет, то создание формы).



1



уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

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

Введение

Итак, цель сегодняшней статьи — поделиться с Вами опытом работы с Microsoft Excel в приложениях, написанных на Delphi.
Вспомнился сейчас один случай. Когда я только начинал работать по своей специальности, пригласили меня написать программу-расчётник для экологов нашего нефтезавода. В принципе ничего серьёзного — программа считает выброс от нагревательной печи и выдает табличку результатов, которую необходимо распечатать и уложить в толстую папку с отчётами. Естественно, что в области разработки подобных приложения я далеко не пионер, поэтому дали взглянуть на аналог будущей программы, который работал ещё под DOS и печатались отчёты на дико скрипящем матричном принтере с 12-ю иголками. Ну посмотрел, элементарная таблица, расчёт немного запутан, но жить можно — начал по-тихоньку писать. И попалась мне тогда на глаза статейка про работу с Excel в Delphi. Вот я и решил попробовать выдавать отчёт не только на форму приложения, а ещё и скидывать весь ход расчёта с формулами и прочим делом в Excel…Надо сказать более сильно детской радости начальника отдела я не видел до сих пор :). Люди, всю жизнь проработавшие в DOS увидели как тот же самый расчёт может выглядеть в современных условиях. Вот теперь при определении технических заданий на каждую новую программу, обязательно присутствует пункт, гласящий, что программа должна передавать данные либо в MS Word либо в MS Excel.Соответственно и цена на разработку возрастает, иногда значительно.

Отсюда можно сделать простой и однозначный вывод — заказчики готовы пожертвовать лишними деньгами только для того, чтобы всё в программе было красиво. Excel может дать вашему приложению ту самую красоту и удобство.

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

Создаем новый модуль (unit) и подключаем в uses следующие модули:

uses ComObj, ActiveX, Variants, Windows, Messages, SysUtils, Classes;

теперь объявляем глобальную переменную:

Одну константу (для удобства):

const ExcelApp = 'Excel.Application';

И пишем простенькую функцию:

function CheckExcelInstall:boolean;
var
  ClassID: TCLSID;
  Rez : HRESULT;
begin
// Ищем CLSID OLE-объекта
  Rez := CLSIDFromProgID(PWideChar(WideString(ExcelApp)), ClassID);
  if Rez = S_OK then  // Объект найден
    Result := true
  else
    Result := false;
end;

Или ещё короче:

function CheckExcelInstall: boolean;
var
  ClassID: TCLSID;
begin
  Result:=CLSIDFromProgID(PWideChar(WideString(ExcelApp)), ClassID) = S_OK;
end;

Если функция CLSIDFromProgID находит CLSID OLE-объекта, то, соответственно — Excel установлен.

Но проверка на наличие установленного Excel — это только часть необходимых операций перед началом работы. Другой немаловажной проверкой является проверка на наличие уже запущенного экземпляра Excel. Если этого не делать, то может случиться такая нехорошая ситуация, когда в системе будет зарегистрировано …дцать процессов Excel и все оперативная память волшебным образом утекает «в трубу» — за такое могут и по ушам надавать. Но мы-то свои уши бережем. Пишем вторую функцию проверки.

2. Определяем запущен ли Excel

function CheckExcelRun: boolean;
begin
  try
    MyExcel:=GetActiveOleObject(ExcelApp);
    Result:=True;
  except
    Result:=false;
  end;
end;

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

3. Как запустить Excel?

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

function RunExcel(DisableAlerts:boolean=true; Visible: boolean=false): boolean;
begin
  try
{проверяем установлен ли Excel}
    if CheckExcelInstall then
      begin
        MyExcel:=CreateOleObject(ExcelApp);
//показывать/не показывать системные сообщения Excel (лучше не показывать)
        MyExcel.Application.EnableEvents:=DisableAlerts;
        MyExcel.Visible:=Visible;
        Result:=true;
      end
    else
      begin
        MessageBox(0,'Приложение MS Excel не установлено на этом компьютере','Ошибка',MB_OK+MB_ICONERROR);
        Result:=false;
      end;
  except
    Result:=false;
  end;
end;

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

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

Переходим к следующему этапу работы — созданию рабочей книги.

4. Создаем пустую рабочую книгу Excel

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

function AddWorkBook(AutoRun:boolean=true):boolean;
begin
  if CheckExcelRun then
    begin
      MyExcel.WorkBooks.Add;
      Result:=true;
    end
  else
   if AutoRun then
     begin
       RunExcel;
       MyExcel.WorkBooks.Add;
       Result:=true;
     end
   else
     Result:=false;
end;

Второй вариант (более лаконичный):

function AddWorkBook(AutoRun: boolean = true): boolean;
begin
  Result := CheckExcelRun;
  if (not Result) and (AutoRun) then
  begin
    RunExcel;
    Result := CheckExcelRun;
  end;
  if Result then
    MyExcel.WorkBooks.Add;
end;

То есть сразу проверяю запущен ли Excel и, если он не запущен, то либо запускаю и добавляю книгу, либо просто выхожу — всё зависит от ситуации.

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

function GetAllWorkBooks:TStringList;
var i:integer;
begin
  try
    Result:=TStringList.Create;
    for i:=1 to MyExcel.WorkBooks.Count do
      Result.Add(MyExcel.WorkBooks.Item[i].FullName)
  except
    MessageBox(0,'Ошибка перечисления открытых книг','Ошибка',MB_OK+MB_ICONERROR);
  end;
end;

Функция возвращает список TStringList всех рабочих книг Excel открытых в данный момент. Обратите внимание, что в отличие от Delphi Excel присваивает первой книге индекс 1, а не 0 как это обычно делается в Delphi при работе, например, с теми же индексами в ComboBox’ах.

Ну, и наконец, после того, как поработали с книгами — их требуется закрыть. Точнее сохранить, а потом уж закрыть.

5. Сохраняем рабочую книгу и закрываем Excel

Для того, чтобы сохранить рабочую книгу, я использовал такую функцию:

function SaveWorkBook(FileName:TFileName; WBIndex:integer):boolean;
begin
  try
    MyExcel.WorkBooks.Item[WBIndex].SaveAs(FileName);
    if MyExcel.WorkBooks.Item[WBIndex].Saved then
      Result:=true
    else
      Result:=false;
  except
    Result:=false;
  end;
end;

Если у Вас открыто 10 книг — просто вызываете функцию 10 раз, меняя значение параметра WBIndex и имени файла и дело в шляпе.

А закрывается Excel вот так:

function StopExcel:boolean;
begin
  try
    if MyExcel.Visible then MyExcel.Visible:=false;
    MyExcel.Quit;
    MyExcel:=Unassigned;
    Result:=True;
  except
    Result:=false;
  end;
end;

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

Книжная полка

Название:Разработка приложений Microsoft Office 2007 в Delphi

Описание Описаны общие подходы к программированию приложений MS Office. Даны программные методы реализации функций MS Excel, MS Word, MS Access и MS Outlook в среде Delphi.

купить книгу delphi на ЛитРес

5
3
голоса

Рейтинг статьи

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Формулировка задачи:

Как из VB проверить запущен ли Word, Excel etc.

Код к задаче: «Как из VB проверить запущен ли Word, Excel etc.»

textual

Dim wObj as Word.Application
On Error Resume Next
 
' Get existing instance of Word if it exists.
Set wObj = GetObject(, 'Word.Application')
 
If Err <> 0 then ' можешь проверить конкретно на 429 ошибку
   MsgBox 'Microsoft Word уже запущен'
End If

Полезно ли:

12   голосов , оценка 3.667 из 5

Skip to content

Проверка данных в Excel: как сделать, использовать и убрать

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

При настройке рабочей книги для пользователей часто может потребоваться контролировать ввод информации в определенные ячейки, чтобы убедиться, что все введенные данные точны и непротиворечивы. Кроме того, вы можете захотеть разрешить в ячейке только определенный тип данных, например числа или даты, или ограничить числа определенным диапазоном, а текст — заданной длиной. Возможно, вы даже захотите предоставить заранее определенный список допустимых значений, чтобы исключить возможные ошибки. Проверка данных Excel позволяет выполнять все эти действия во всех версиях Microsoft Excel 365, 2019, 2016, 20013, 2010 и более ранних версиях.

Что такое проверка данных в Excel?

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

Вот лишь несколько примеров того, что может сделать проверка данных в Excel:

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

Например, вы можете настроить правило, которое ограничивает ввод данных 3-значными числами от 100 до 999. Если пользователь вводит что-то другое, Excel покажет предупреждение об ошибке, объясняющее, что было сделано неправильно:

Как сделать проверку данных в Excel

Чтобы добавить проверку данных в Excel, выполните следующие действия.

1. Откройте диалоговое окно «Проверка данных».

Напомним, где находится кнопка проверки данных в Excel. Выбрав одну или несколько ячеек для проверки, перейдите на вкладку «Данные» > группа «Работа с данными» и нажмите кнопку «Проверка данных».

2. Создайте правило проверки Excel.

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

  • Значения — введите числа в поля критериев, как показано на снимке экрана ниже.
  • Ссылки на ячейки — создание правила на основе значения или формулы в другой ячейке.
  • Формулы — позволяют выразить более сложные условия.

В качестве примера создадим правило, разрешающее пользователям вводить только целое число от 100 до 999:

Настроив правило проверки, нажмите кнопку «ОК», чтобы закрыть окно «Проверка вводимых значений», или переключитесь на другую вкладку, чтобы добавить подсказку по вводу и/или сообщение об ошибке.

3. Подсказка по вводу (необязательно).

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

  • Убедитесь, что установлен флажок Отображать подсказку при выборе ячейки.
  • Введите заголовок и текст сообщения в соответствующие поля.
  • Нажмите OK, чтобы закрыть диалоговое окно.

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

4. Отображение предупреждения об ошибке (необязательно)

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

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

Чтобы настроить пользовательское сообщение об ошибке, перейдите на вкладку «Сообщение об ошибке» и задайте следующие параметры:

  • Установите флажок Выводить сообщение об ошибке (обычно установлен по умолчанию).
  • В поле Вид выберите нужный тип оповещения.
  • Введите заголовок и текст сообщения об ошибке в соответствующие поля.
  • Нажмите ОК.

И теперь, если пользователь введет недопустимые значения, Excel отобразит специальное предупреждение с объяснением ошибки (как показано в начале этого руководства).

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

Как настроить ограничения проверки данных Excel

При добавлении правила проверки данных в Excel вы можете выбрать один из предопределенных параметров или указать новые критерии на основе собственной формулы. Ниже мы обсудим каждую из встроенных опций.

Как вы уже знаете, критерии проверки определяются на вкладке «Параметры» диалогового окна «Проверка данных» (вкладка «Данные» > «Проверка данных»).

В первую очередь нужно настроить проверку типа записываемых данных.

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

  • Равно или не равно указанному числу
  • Больше или меньше указанного числа
  • Между двумя числами или вне, чтобы исключить этот диапазон чисел

Например, вот как выглядят ограничения по проверке данных Excel, которые допускают любое целое число больше 100:

Проверка даты и времени в Excel

Чтобы проверить даты, выберите «Дата» в поле «Тип данных», а затем выберите соответствующий критерий в поле «Значение». Существует довольно много предопределенных параметров на выбор: разрешить только даты между двумя датами, равные, большие или меньшие определенной даты и т. д.

Точно так же, чтобы проверить время, выберите Время в поле Значение, а затем определите необходимые критерии.

Например, чтобы разрешить только даты между датой начала в B1 и датой окончания в B2, примените это правило проверки даты Excel:

Разрешить только будни или выходные

Чтобы разрешить пользователю вводить даты только  будних или выходных дней, настройте пользовательское правило проверки на основе функции ДЕНЬНЕД (WEEKDAY).

Если для второго аргумента установлено значение 2, функция возвращает целое число в диапазоне от 1 (понедельник) до 7 (воскресенье). Так, для будних дней (пн-пт) результат формулы должен быть меньше 6, а для выходных (сб и вс) — больше 5.

Таким образом, разрешить только рабочие дни:

=ДЕНЬНЕД( ячейка ; 2)<6

Разрешить только выходные :

=ДЕНЬНЕД( ячейка ; 2)>5

Например, чтобы разрешить ввод только рабочих дней в ячейки C2:C8, используйте следующую формулу:

=ДЕНЬНЕД(A2;2)<6

Проверить даты на основе сегодняшней даты

Во многих случаях может потребоваться использовать сегодняшнюю дату в качестве начальной даты допустимого диапазона дат. Чтобы получить текущую дату, используйте функцию СЕГОДНЯ , а затем добавьте к ней нужное количество дней, чтобы вычислить дату окончания временного периода.

Например, чтобы ограничить ввод данных через 6 дней (7 дней, включая сегодняшний день), мы можем использовать встроенное правило даты с критериями в виде формул:

  • Выберите Дата в поле Тип данных
  • Выберите в поле Значениемежду
  • В поле Начальная дата введите выражение    =СЕГОДНЯ()
  • В поле Конечная дата  введите   =СЕГОДНЯ() + 6

Аналогичным образом вы можете ограничить пользователей вводом дат до или после сегодняшней даты. Для этого выберите меньше или больше, чем в поле Значение, а затем введите =СЕГОДНЯ() в  поле Начальная дата или Конечная дата соответственно.

Проверка времени на основе текущего времени

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

В поле Тип данных выберите Время .

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

В поле Время окончания или Время начала (в зависимости от того, какие критерии вы выбрали на предыдущем шаге) введите одну из следующих формул:

Чтобы проверить дату и время на основе текущей даты и времени:

=ТДАТА()

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

=ВРЕМЯ(ЧАС(ТДАТА());МИНУТЫ(ТДАТА());СЕКУНДЫ(ТДАТА()))

Проверка длины текста

Чтобы разрешить ввод данных определенной длины, выберите Длина текста в поле Тип данных и укажите критерии проверки в соответствии с вашей бизнес-логикой.

Например, чтобы ограничить ввод до 15 символов, создайте такое правило:

Примечание. Параметр «Длина текста» ограничивает количество символов, но не тип данных. Это означает, что приведенное выше правило разрешает как текст, так и числа до 15 символов или 15 цифр соответственно.

Список проверки данных Excel (раскрывающийся список)

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

  1. Откройте диалоговое окно «Проверка данных» (вкладка «Данные» > «Проверка данных»).
  2. На вкладке «Настройки» выберите «Список» в поле «Тип данных».
  3. В поле Источник введите элементы списка проверки Excel, разделенные точкой с запятой. Например, чтобы ограничить пользовательский ввод тремя вариантами, введите Да; Нет; Н/Д.
  4. Убедитесь, что выбрана опция Список допустимых значений, чтобы стрелка раскрывающегося списка отображалась рядом с ячейкой.
  5. Нажмите ОК.

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

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

Другие способы создания списка проверки данных в Excel

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

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

Во всех этих случаях вы просто записываете соответствующую ссылку на диапазон либо элемент таблицы в поле Источник.

Разрешить только числа

В дополнение к встроенным правилам проверки данных Excel, обсуждаемым в этом руководстве, вы можете создавать собственные правила с собственными формулами проверки данных. 

Удивительно, но ни одно из встроенных правил проверки данных Excel не подходит для очень типичной ситуации, когда вам нужно ограничить пользователей вводом только чисел в определенные ячейки. Но это можно легко сделать с помощью пользовательской формулы проверки данных, основанной на функции ЕЧИСЛО(), например:

=ЕЧИСЛО(C2)

Где C2 — самая верхняя ячейка диапазона, который вы хотите проверить.

Примечание. Функция ЕЧИСЛО допускает любые числовые значения в проверенных ячейках, включая целые числа, десятичные дроби, дроби, а также даты и время, которые также являются числами в Excel.

Разрешить только текст

Если вы ищете обратное — разрешить только текстовые записи в заданном диапазоне ячеек, то создайте собственное правило с функцией ЕТЕКСТ (ISTEXT), например:

=ЕТЕКСТ(B2)

Где B2 — самая верхняя ячейка выбранного диапазона.

Разрешить текст, начинающийся с определенных символов

Если все значения в определенном диапазоне должны начинаться с определенного символа или подстроки, выполните проверку данных Excel на основе функции СЧЁТЕСЛИ с подстановочным знаком:

=СЧЁТЕСЛИ(A2; » текст *»)

Например, чтобы убедиться, что все идентификаторы заказов в столбце A начинаются с префикса «AРТ-», «арт-», «Aрт-» или «aРт-» (без учета регистра), определите пользовательское правило с этой проверкой данных.

=СЧЁТЕСЛИ(A2;»АРТ-*»)

Формула проверки с логикой ИЛИ (несколько критериев)

В случае, если есть 2 или более допустимых префикса, добавьте несколько функций СЧЁТЕСЛИ, чтобы ваше правило проверки данных Excel работало с логикой ИЛИ:

=СЧЁТЕСЛИ(A2;»АРТ-*»)+СЧЁТЕСЛИ(A2;»АБВ-*»)

Проверка ввода с учетом регистра

Если регистр символов имеет значение, используйте СОВПАД  (EXACT) в сочетании с функцией ЛЕВСИМВ, чтобы создать формулу проверки с учетом регистра для записей, начинающихся с определенного текста:

=СОВПАД(ЛЕВСИМВ(ячейка; число_символов); текст)

Например, чтобы разрешить только те коды заказов, которые начинаются с «AРТ-» (ни «арт-», ни «Арт-» не допускаются), используйте эту формулу:

=СОВПАД(ЛЕВСИМВ(A2;4);»АРТ-«)

В приведенной выше формуле функция ЛЕВСИМВ извлекает первые 4 символа из ячейки A2, а СОВПАД выполняет сравнение с учетом регистра с жестко заданной подстрокой (в данном примере «AРТ-«). Если две подстроки точно совпадают, формула возвращает ИСТИНА и проверка проходит успешно; в противном случае возвращается ЛОЖЬ и проверка завершается неудачно.

Разрешить только значения, содержащие определенный текст

Чтобы разрешить ввод значений, которые содержат определенный текст в любом месте ячейки (в начале, середине или конце), используйте функцию ЕЧИСЛО (ISNUMBER) в сочетании с НАЙТИ (FIND) или ПОИСК (SEARCH) в зависимости от того, хотите ли вы совпадение с учетом регистра или без учета регистра:

Проверка без учета регистра:

ЕЧИСЛО(ПОИСК( текст ; ячейка ))

Проверка с учетом регистра:

ЕЧИСЛО(НАЙТИ( текст ; ячейка ))

В нашем примере, чтобы разрешить только записи, содержащие текст «AР» в ячейках A2: A8, используйте одну из следующих формул, создав правило проверки в ячейке A2:

Без учета регистра:

=ЕЧИСЛО(ПОИСК(«ар»;A2))

С учетом регистра:

=ЕЧИСЛО(НАЙТИ(«АР»;A2))

Формулы работают по следующей логике:

Вы ищете подстроку «AР» в ячейке A2, используя НАЙТИ или ПОИСК, и оба возвращают позицию первого символа в подстроке. Если текст не найден, возвращается ошибка. Если поиск успешен и «АР» найден в ячейке, мы получаем номер позиции в тексте, где эта подстрока была найдена. Далее функция ЕЧИСЛО возвращает ИСТИНА, и проверка данных проходит успешно. В случае, если подстроку не удалось найти, результатом будет ошибка и ЕЧИСЛО возвращает ЛОЖЬ. Запись не будет разрешена в ячейке.

Разрешить только уникальные записи и запретить дубликаты

В ситуациях, когда определенный столбец или диапазон ячеек не должны содержать дубликатов, настройте пользовательское правило проверки данных, разрешающее только уникальные записи. Для этого мы можем использовать классическую формулу СЧЁТЕСЛИ для выявления дубликатов :

=СЧЁТЕСЛИ( диапазон ; самая верхняя_ячейка )<=1

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

=СЧЁТЕСЛИ($A$2:$A$8; A2)<=1

При вводе уникального значения формула возвращает ИСТИНА, и проверка проходит успешно. Если такое же значение уже существует в указанном диапазоне (счетчик больше 1), функция СЧЁТЕСЛИ возвращает ЛОЖЬ, и вводимые данные не проходят проверку.

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

Как отредактировать проверку данных в Excel

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

  1. Выберите любую из проверенных ячеек.
  2. Откройте диалоговое окно «Проверка данных» (вкладка «Данные» > «Проверка данных»).
  3. Внесите необходимые изменения.
  4. Установите флажок Применить эти изменения ко всем другим ячейкам с теми же параметрами, чтобы скопировать внесенные вами изменения во все остальные ячейки с исходными критериями проверки.
  5. Нажмите OK, чтобы сохранить изменения.

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

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

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

Чтобы скопировать правило проверки в Excel, выполните следующие 4 быстрых шага:

  1. Выберите ячейку, к которой применяется правило проверки, и нажмите Ctrl + С , чтобы скопировать его.
  2. Выберите другие ячейки, которые вы хотите проверить. Чтобы выделить несмежные ячейки, нажмите и удерживайте клавишу Ctrl при выборе ячеек.
  3. Щелкните выделенный фрагмент правой кнопкой мыши, выберите «Специальная вставка» и выберите параметр «Условия на значения».

Либо используйте комбинацию клавиш Ctrl + Alt + V,  и затем — Н.

  1. Нажмите ОК.

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

Как найти ячейки с проверкой данных в Excel

Чтобы быстро найти все проверенные ячейки на текущем листе, перейдите на вкладку «Главная» > группа «Редактирование» и нажмите «Найти и выделить» > «Проверка данных» :

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

Как убрать проверку данных в Excel

В целом, есть два способа удалить проверку в Excel: стандартный подход, разработанный Microsoft, и метод без мыши, разработанный фанатами Excel, которые никогда не отрывают руки от клавиатуры без крайней необходимости (например, чтобы выпить чашку кофе:)

Способ 1: Обычный способ отключить проверку данных

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

  1. Выберите ячейку (ячейки) с проверкой данных.
  2. На вкладке «Данные» нажмите кнопку «Проверка данных».
  3. На вкладке «Настройки» нажмите кнопку «Очистить все», а затем нажмите «ОК».

Советы:

  1. Чтобы удалить проверку данных из всех ячеек на текущем листе, используйте инструмент «Найти и выделить», чтобы выбрать все ячейки с проверкой.
  2. Чтобы удалить определенное правило проверки данных, выберите любую ячейку с этим правилом, откройте диалоговое окно «Проверка данных», установите флажок «Применить эти изменения ко всем другим ячейкам с такими же настройками» и нажмите кнопку «Очистить все».

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

Способ 2: Удалить правила проверки данных при помощи Специальной вставки

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

  1. Выберите пустую ячейку без проверки данных и нажмите Ctrl + С, чтобы скопировать ее в буфер обмена.
  2. Выберите ячейки, в которых вы хотите отключить проверку данных.
  3. Нажмите Ctrl + Alt + V, и затем Н. Эта комбинация клавиш вызовет «Специальная вставка» > «Проверка данных».
  4. Нажимаем ОК.

Советы по проверке данных в Excel

Теперь, когда вы знакомы с основами проверки данных в Excel, позвольте мне поделиться несколькими советами, которые могут сделать ваши правила намного более эффективными.

Проверка данных на основе другой ячейки

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

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

Например, чтобы разрешить любое целое число, находящееся между 100 и 999, выберите критерии «минимум» и «максимум» в вкладке «Параметры» и введите в них адреса ячеек с этими числами:

Рис18

Вы также можете ввести формулу в ячейку, на которую указывает ссылка, и Excel проверит ввод на основе этой формулы.

Например, чтобы запретить пользователям вводить даты после сегодняшней даты, введите формулу =СЕГОДНЯ() в какую-нибудь ячейку, скажем, B1, а затем настройте правило проверки даты на основе этой ячейки:

Или вы можете ввести формулу =СЕГОДНЯ() непосредственно в поле Конечная дата, что будет иметь тот же эффект.

Правила проверки на основе формул

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

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

=МИН($С$2:$С$10)

=МАКС($С$2:$С$10)

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

Как найти неверные данные на листе

Хотя Microsoft Excel позволяет применять проверку данных к ячейкам, в которых уже есть данные, он не уведомит вас, если некоторые из уже существующих значений не соответствуют критериям проверки.

Чтобы найти недействительные данные, которые попали в ваши рабочие листы до того, как вы добавили проверку данных, перейдите на вкладку «Данные» и нажмите «Проверка данных» > «Обвести неверные данные».

Это выделит все ячейки, которые не соответствуют критериям проверки.

Как только вы исправите неверную запись, отметка автоматически исчезнет. Чтобы удалить все отметки, перейдите на вкладку «Данные» и нажмите «Проверка данных» > «Удалить обводку неверных данных».

Как поделиться книгой с проверкой данных

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

После совместного использования книги ваши правила проверки данных продолжат работать, но вы не сможете ни изменить их, ни добавить новые правила.

Почему проверка данных Excel не работает?

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

Проверка данных не работает для скопированных данных

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

Хотя нет способа отключить клавиши копирования/вставки (кроме использования VBA), вы можете, по крайней мере, предотвратить копирование данных путем перетаскивания ячеек. Для этого выберите «Файл» > «Параметры» > «Дополнительно» > «Параметры редактирования» и снимите флажок «Включить маркер заполнения и перетаскивания ячеек».

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

Кнопка «Проверка данных» не активна (выделена серым цветом), если вы вводите или изменяете данные в ячейке. Закончив редактирование ячейки, нажмите Enter или Esc, чтобы выйти из режима редактирования, а затем выполните проверку данных.

Проверка данных не может быть применена к защищенной или общей книге

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

Неправильные формулы проверки данных

При проверке данных на основе формул в Excel необходимо проверить три важные вещи:

  • Формула проверки не возвращает ошибок.
  • Формула не ссылается на пустые ячейки.
  • Используются правильные ссылки на ячейки.

Ручной пересчет формул включен

Если в Excel включен режим ручного расчета, невычисленные формулы могут помешать правильной проверке данных. Чтобы снова изменить параметр расчета Excel на автоматический, перейдите на вкладку «Формулы» > группу «Расчет», нажмите кнопку «Параметры расчета» и выберите «Автоматически».

Проверьте правильность формулы проверки данных

Для начала скопируйте формулу проверки в какую-нибудь ячейку, чтобы убедиться, что она не возвращает ошибку, такую ​​как #Н/Д, #ЗНАЧ или #ДЕЛ/0!.

Если вы создаете пользовательское правило , формула должна возвращать логические значения ИСТИНА и ЛОЖЬ или приравненные к ним значения 1 и 0 соответственно.

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

Формула проверки данных не должна ссылаться на пустую ячейку

Если вы активируете опцию «Игнорировать пустые ячейки» при определении правила (обычно выбрано по умолчанию), то следите, чтобы ваши формулы или условия не ссылались на пустую ячейку.

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

Абсолютные и относительные ссылки на ячейки в формулах проверки

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

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

Чтобы лучше проиллюстрировать это, рассмотрим следующий пример.

Предположим, вы хотите ограничить ввод данных в ячейках с A2 по A8 целыми числами от 100 (минимальное значение) до 999. Чтобы проще было при необходимости изменить критерии проверки, используем ссылки на ячейки с этими значениями, как показано на скриншоте ниже:

Это правило будет корректно выполняться только для первой ячейки диапазона – A2. Для ячейки A3 критерии максимума и минимума изменятся на E3 и F3. Поскольку эти ячейки пусты, то условие ввода теперь – любое число больше либо меньше нуля. Правда, символьные значения и дробные числа вы вводить не сможете, так как продолжает действовать ограничение на тип данных – целые числа.

Чтобы исправить формулу, просто введите «$» перед ссылками на столбцы и строки, чтобы зафиксировать их: =$E$2 и $F$2. Или используйте клавишу  F4 для переключения между различными типами ссылок.

Вот как вы можете добавить и использовать проверку данных в Excel. Я благодарю вас за чтение и надеюсь ещё увидеть вас в нашем блоге!

Как
проверить корректность установки Excel.

В случаях,
когда при экспорте документов в Excel в Гранд-СМЕТЕ
выводятся всевозможные сообщения об ошибке и excel не
запускается, то первым делом необходимо убедиться в корректности установки Excel на компьютере.

GUID Excel:
00024500-0000-0000-C000-000000000046

1.Нажать кнопку ПускВыполнить.
Далее, ввести команду regedit и нажать на кнопку Ок.

2.После того, как запустится программа
редактирования реестра, необходимо найти в реестре в узле HKEY_CLASSES_ROOT узел с именем 00024500-0000-0000-C000-000000000046.

3.Открываем:  00024500-0000-0000-C000-000000000046
à LocalServer32. Находим строку с
типом REG_SZ. Двойным щелчком
мыши на значении (по умолчанию) строки с типом REG_ZN в колонке «Имя»
вызываем  окно редактирования

выделяем всю строку за исключением «/automation» и копируем ее в
буфер Windows. Именно этой
командой Windows пытается запустить Excel, когда этого требует
программа Гранд-СМЕТА.

4. .Нажать кнопку ПускВыполнить.
Далее необходимо вставить из буфера команду, скопированну на предыдущем шаге. В
моем примере это «C:PROGRA~1MICROS~2Office10EXCEL.EXE» и нажать на
кнопку Ок. Для каждого конкретного компьютера эта команда имеет свой
вид.

Если Excel был установлен на
компьютер корректно и с соблюдением всех этапов инсталляции и настройки, то он
запустится.

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

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