Excel и судоку - читать онлайн бесплатно, автор Андрей Евгеньевич Зайнулин, ЛитПортал
bannerbanner
Excel и судоку
Добавить В библиотеку
Оценить:

Рейтинг: 3

Поделиться
Купить и скачать

Excel и судоку

На страницу:
4 из 7
Настройки чтения
Размер шрифта
Высота строк
Поля

Application.Run ″Судоку_2020.xlsm! Ускорение_выключить″

End Sub

↑ ↑ ↑ ↑

На рисунке 2.21 покажем скриншот текста этого макроса в редакторе VBA.


Рисунок 2.21.


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

Надо просто учитывать тот факт, что в этой конкретной ситуации пробел после восклицательного знака не нужен. Кстати, в записи этой строки макроса до восклицательного знака находится название файла (вместе с расширением этого файла), а после восклицательного знака – название того макроса, который нужно запустить. В любом случае, правильность написания того или иного макроса можно уточнить в скриншоте (например, рисунок 2.21).

Вариант №2: Почти то же самое, что и при первом варианте, но без создания нового макроса.

При этом варианте алгоритм действий будет следующий:

1. Запускаем макрос, который включает ускорение.

2. Запускаем тот макрос, который необходимо ускорить. В нашем случае это будет макрос под названием Имя_строкам_судоку.

3. Запускаем макрос, выключающий ускорение.

Вариант №3: Изменить тот макрос, который надо ускорить. Это можно тоже сделать несколькими разными способами:

Вариант (способ) №3.1: в самое начало того макроса, который нужно ускорить, добавим основные строки макроса, запускающего ускорение, а в конце того макроса, который надо ускорить, надо добавить основные строки того макроса, который выключает ускорение.

При использовании этого способа макрос Имя_строкам_судоку примет следующий вид:

↓ ↓ ↓ ↓

Sub Имя_строкам_судоку ()

′Отключаем обновление экрана

Application.ScreenUpdating = False

′Отключаем автоматический пересчет формул

Application.Calculation = xlCalculationManual

′Отключаем отслеживание событий

Application. EnableEvents = False

′Отключаем разбивку на печатные страницы

ActiveWorkbook.ActiveSheet. DisplayPageBreaks = False

For i = 3 To 11

Range (Cells (i, 3), Cells (i, 11)).Select

ActiveWorkbook.Names.Add Name:=″стр_″ & i – 2, RefersToR1C1:= _

″=Основное_судоку! R″ & i & ″C3:R″ & i & ″C11″

ActiveWorkbook.Names (″стр_″ & i – 2).Comment = ″строка ″ & i – 2 & ″ судоку″

Next i

′Возвращаем обновление экрана

Application.ScreenUpdating = True

′Возвращаем автоматический пересчет формул

Application.Calculation = xlCalculationAutomatic

′Включаем отслеживание событий

Application. EnableEvents = True

End Sub

↑ ↑ ↑ ↑

Скриншот этого макроса в редакторе VBA на рисунке 2.22:


Рисунок 2.22.


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

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

При использовании этого способа макрос Имя_строкам_судоку примет следующий вид:

↓ ↓ ↓ ↓

Sub Имя_строкам_судоку ()

Application.Run ″Судоку_2020.xlsm! Ускорение_включить″

For i = 3 To 11

Range (Cells (i, 3), Cells (i, 11)).Select

ActiveWorkbook.Names.Add Name:=″стр_″ & i – 2, RefersToR1C1:= _

″=Основное_судоку! R″ & i & ″C3:R″ & i & ″C11″

ActiveWorkbook.Names (″стр_″ & i – 2).Comment = ″строка ″ & i – 2 & ″ судоку″

Next i

Application.Run ″Судоку_2020.xlsm! Ускорение_выключить″

End Sub

↑ ↑ ↑ ↑

Скриншот этого макроса на рисунке 2.23:


Рисунок 2.23.


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

Мы уже раньше говорили о том, что к именам ячеек или диапазонов ячеек можно добавлять префиксы. Наш файл (наша книга Эксель), действительно, будет содержать немало разных имен. Если мы не боимся запутаться во множестве этих имен, то оставим все эти имена без изменений, то есть без префиксов. Но для удобства можно к именам добавить префиксы. Например, префикс «bs..» будет означать, что данное имя будет иметь отношение к основному судоку (поскольку судоку – это латинский квадрат, то мы часто будем прибегать не только к латинским буквам, но и к словам латинского языка; bs – это первые буквы слов basic Sudoku, что в переводе означает «основное судоку»). Конечно же, после префикса вполне достаточно и одной точки, но я снова столкнулся с той автозаменой, которая есть у издательства, где я публикую эту книгу. Эта самая автозамена часто ставит пробел сразу после точки. Для художественных произведений наличие пробела после точки всегда обязательно, но тут речь идет о программировании, это уже другая история. Тут после точек не всегда должен быть пробел. Точки внутри компьютерных программ – это уже не знаки препинания. Поэтому я обращаюсь ко всем моим читателям: можно, конечно, после префикса оставить и две точки сразу, страшного в этом ничего не будет, более того, это можно позиционировать как своеобразную «фишку», «изюминку». Но если хочется оставить только одну точку после префиксов, то вторую точку можно просто убрать. В этой книге всегда будут располагаться две точки сразу после префиксов, поскольку в этом случае автозамена не будет добавлять после двух подряд точек пробелы, которые тут совершенно не нужны. Убирать вторую точку или нет после префикса – каждый читатель моей книги сам решит для себя.

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

Тогда при составлении макроса для присвоения имен строкам судоку с использованием варианта 3.2, о котором говорилось ранее, мы получим следующий текст макроса (этот вариант макроса будет создавать имена строк с префиксом):

↓ ↓ ↓ ↓

Sub Имя_строкам_судоку ()

Application.Run ″Судоку_2020.xlsm! Ускорение_включить″

For i = 3 To 11

Range (Cells (i, 3), Cells (i, 11)).Select

ActiveWorkbook.Names.Add Name:=″bs..стр_″ & i – 2, RefersToR1C1:= _

″=Основное_судоку! R″ & i & ″C3:R″ & i & ″C11″

ActiveWorkbook.Names (″bs..стр_″ & i – 2).Comment = ″строка ″ & i – 2 & ″ судоку″

Next i

Application.Run ″Судоку_2020.xlsm! Ускорение_выключить″

End Sub

↑ ↑ ↑ ↑

Скриншот этого макроса с двойным префиксом в основных именах изображен на рисунке 2.24.


Рисунок 2.24.


А можно оба варианта объединить, в этом случае один макрос будет создавать имена строкам судоку и с префиксом, и без префикса. Вот каким будет текст этого макроса:

↓ ↓ ↓ ↓

Sub Имя_строкам_судоку ()

Application.Run ″Судоку_2020.xlsm! Ускорение_включить″

For i = 3 To 11

Range (Cells (i, 3), Cells (i, 11)).Select

ActiveWorkbook.Names.Add Name:=″стр_″ & i – 2, RefersToR1C1:= _

″=Основное_судоку! R″ & i & ″C3:R″ & i & ″C11″

ActiveWorkbook.Names (″стр_″ & i – 2).Comment = ″строка ″ & i – 2 & ″ судоку″

ActiveWorkbook.Names.Add Name:=″bs..стр_″ & i – 2, RefersToR1C1:= _

″=Основное_судоку! R″ & i & ″C3:R″ & i & ″C11″

ActiveWorkbook.Names (″bs..стр_″ & i – 2).Comment = ″строка ″ & i – 2 & ″ судоку″

Next i

Application.Run ″Судоку_2020.xlsm! Ускорение_выключить″

End Sub

↑ ↑ ↑ ↑

Скриншот этого макроса на рисунке 2.25:


Рисунок 2.25.


Итак, дело сделано. Имена строкам судоку присвоены. Причем даже в нескольких экземплярах. Каждый выбирает для себя, какие именно имена использовать чаще (с префиксами или без них). Можно выбирать любой вариант, какой больше нравится. А можно выбрать и оба варианта, а именно: добавлять и те имена, что содержат префиксы, и другие имена, которые без префиксов. Как уже говорилось ранее, одной и той же ячейке Эксель или группе (диапазону) ячеек можно присваивать одновременно несколько разных имен.

После того, как мы присвоили все имена строкам судоку, можно проверить, что получилось. Например, можно выделить строку 8 судоку и посмотреть, что будет изображено в поле имени (рисунок 2.26):


Рисунок 2.26.


Итак, что мы видим на рисунке 2.26? Выделена строка 8 судоку (это ячейки с C10 по K10 Эксель включительно). В поле имени – название (имя) выделенного диапазона. Мы знаем, что этому диапазону присвоено одновременно несколько разных имен, поэтому в диспетчере имен мы видим только то имя диапазона, которое по алфавиту будет стоять первым. Мы уже говорили о том, что на первом месте будут буквы латинского алфавита, а буквы русского алфавита будут после. Поэтому мы видим то имя диапазона, которое начинается с буквы латинского алфавита.

На этом тему о присвоении имен строкам судоку можно считать вполне исчерпанной.

2.3.3. Имена для столбцов судоку

Далее присвоим имена столбцам судоку.

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

Точнее говоря, мы возьмем только один макрос (который называется Имя_строкам_судоку). Мы же его уже несколько раз преобразовывали, и текущая версия этого макроса позволяет получить несколько имен для каждой строки судоку, причем каждое имя будет содержать свой комментарий. Чтобы не потерять этот макрос, мы сделаем его копию, и изменим название этой копии. Если тот макрос, который присваивал имена строкам судоку, назывался Имя_строкам_судоку, то копия макроса, присваивающая имена столбцам судоку, будет называться так: Имя_столбцам_судоку.

Вот каким будет окончательный вариант этого макроса:

↓ ↓ ↓ ↓

Sub Имя_столбцам_судоку ()

Application.Run ″Судоку_2020.xlsm! Ускорение_включить″

For j = 3 To 11

Range (Cells (3, j), Cells (11, j)).Select

ActiveWorkbook.Names.Add Name:=″сто_″ & j – 2, RefersToR1C1:= _

″=Основное_судоку! R3C″ & j & ″:R11″ & ″C″ & j

ActiveWorkbook.Names (″сто_″ & j – 2).Comment = ″столбец ″ & j – 2 & ″ судоку″

ActiveWorkbook.Names.Add Name:=″bs..сто_″ & j – 2, RefersToR1C1:= _

″=Основное_судоку! R3C″ & j & ″:R11″ & ″C″ & j

ActiveWorkbook.Names (″bs..сто_″ & j – 2).Comment = ″столбец ″ & j – 2 & ″ судоку″

Next j

Application.Run ″Судоку_2020.xlsm! Ускорение_выключить″

End Sub

↑ ↑ ↑ ↑

На рисунке 2.27 изображен скриншот этого макроса в редакторе VBA.


Рисунок 2.27.


Имена строкам и столбцам судоку присвоены, далее присвоим имена блокам (квадратикам) судоку.

Возможно, у моих читателей может возникнуть вопрос о том, как создавать копию макроса. Это лучше сделать в редакторе VBA. Там можно выделить весь текст макроса, затем нажать на правую кнопку мыши. Появится контекстное меню, надо выбрать пункт «Copy», то есть «Копировать». Затем снимаем выделение текста макроса, находим в редакторе VBA пустое место и уже на пустом месте, не внутри какого-либо макроса, снова нажимаем на правую кнопку мыши. Теперь надо выбрать пункт «Paste», то есть «Вставить». После копирования макроса нужно сразу изменить имя у второго макроса, двух макросов с одним именем в одном файле Эксель быть не должно.

2.3.4. Имена для блоков судоку

Теперь нужно аналогичным образом присвоить номера всем блокам (квадратикам) судоку. Но вначале определимся с нумерацией блоков (рисунок 2.28):


Рисунок 2.28.


Итак, левый верхний блок – это блок с номером 1, верхний средний блок – это блок с номером 2, и так далее.

Блоку №1 присвоим имя бло_1, блоку №2 присвоим имя бло_2, остальным блокам присвоим имена аналогично. Если говорить про те имена блоков, которые будут содержать префиксы, тогда у блока номер один будет имя: bs..бло_1.

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

Далее покажем окончательный вариант этого макроса:

↓ ↓ ↓ ↓

Sub Имя_блокам_судоку ()

Application.Run ″Судоку_2020.xlsm! Ускорение_включить″

k = 1

For i = 3 To 9 Step 3

For j = 3 To 9 Step 3

Range (Cells (i, j), Cells (i +2, j + 2)).Select

ActiveWorkbook.Names.Add Name:=″бло_″ & k, RefersToR1C1:= _

″=Основное_судоку! R″ & i & ″C″ & j & ″:R″ & i +2 & ″C″ & j +2

ActiveWorkbook.Names (″бло_″ & k).Comment = ″блок ″ & k & ″ судоку″

ActiveWorkbook.Names.Add Name:=″bs..бло_″ & k, RefersToR1C1:= _

″=Основное_судоку! R″ & i & ″C″ & j & ″:R″ & i +2 & ″C″ & j +2

ActiveWorkbook.Names (″bs..бло_″ & k).Comment = ″блок ″ & k & ″ судоку″

k = k +1

Next j

Next i

Application.Run ″Судоку_2020.xlsm! Ускорение_выключить″

End Sub

↑ ↑ ↑ ↑

Скриншот этого макроса в редакторе VBA покажем на рисунке 2.29:


Рисунок 2.29.


Но, поскольку часто можно блоки называть не только блоками, но и квадратиками, можно создать еще один макрос, который будет присваивать имена не блокам, а квадратикам. Тогда первый квадратик будет называться ква_1, а если применить префикс – тогда bs..ква_1. Вот текст этого макроса.

↓ ↓ ↓ ↓

Sub Имя_квадратикам_судоку ()

Application.Run ″Судоку_2020.xlsm! Ускорение_включить″

k = 1

For i = 3 To 9 Step 3

For j = 3 To 9 Step 3

Range (Cells (i, j), Cells (i +2, j + 2)).Select

ActiveWorkbook.Names.Add Name:=″ква_″ & k, RefersToR1C1:= _

″=Основное_судоку! R″ & i & ″C″ & j & ″:R″ & i +2 & ″C″ & j +2

ActiveWorkbook.Names (″ква_″ & k).Comment = ″квадратик ″ & k & ″ судоку″

ActiveWorkbook.Names.Add Name:=″bs..ква_″ & k, RefersToR1C1:= _

″=Основное_судоку! R″ & i & ″C″ & j & ″:R″ & i +2 & ″C″ & j +2

ActiveWorkbook.Names (″bs..ква_″ & k).Comment = ″квадратик ″ & k & ″ судоку″

k = k +1

Next j

Next i

Application.Run ″Судоку_2020.xlsm! Ускорение_выключить″

End Sub

↑ ↑ ↑ ↑

На рисунке 2.30 покажем скриншот этого макроса в редакторе VBA.


Рисунок 2.30.


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

2.3.5. Имена клеткам основного судоку

Итак, имена строкам, столбцам и блокам судоку присвоены. Теперь нужно присвоить имена каждой клетке судоку. Здесь тоже мы будем присваивать двойные имена. Во-первых, клетки могут именоваться в стиле кле_11, кле_12, кле_13, и т. д. При этом первая цифра будет означать номер строки, вторая цифра – номер столбца. Не обязательно читать (и произносить) эти цифры как двузначные числа (в стиле кле-одиннадцать, кле-двенадцать), лично мне нравится прочтение каждой цифры в отдельности. Например, кле-один-один, кле-один-два, и так далее. Мне кажется, что так было бы более удобно, чтобы было очевидно отделение номера строки от номера столбца.

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

Это будет принцип №1 – то есть такой принцип присвоения имен клеткам судоку, при котором клетки будут иметь «цифровые» имена (такие имена, когда и строки судоку, и столбцы судоку имеют цифровую кодировку).

Но есть и принцип №2. В этом случае клеткам можно присваивать имена по-другому. Так, например, левая верхняя клетка судоку будет именоваться кле_А1 (читаем: кле-а-один).

Кстати, буквы от А до К, которые понадобятся при присвоении этих имен и символизируют заголовки строк судоку, у нас уже имеются (они уже находятся в столбце B Эксель). Имеются и нужные цифры, которые символизируют номера столбцов судоку, они расположены в строке 2 Эксель. Поэтому сложностей с присвоением нужных имен ячейкам быть не должно, можно брать нужные буквы и цифры именно из листа Эксель, надо только указать ссылки на нужные ячейки.

Вот текст макроса, присваивающего номера клеткам судоку по принципу номер один:

↓ ↓ ↓ ↓

Sub Имена_основным_клеткам ()

Application.Run ″Судоку_2020.xlsm! Ускорение_включить″

For i = 1 To 9

For j = 1 To 9

Cells (i +2, j + 2).Select

ActiveWorkbook.Names.Add Name:=″кле_″ & _

i & j, RefersToR1C1:= _

″=Основное_судоку! R″ & i +2 & ″C″ & j +2

ActiveWorkbook.Names.Add Name:=″bs..кле_″ & _

i & j, RefersToR1C1:= _

″=Основное_судоку! R″ & i +2 & ″C″ & j +2

Next j

Next i

Application.Run ″Судоку_2020.xlsm! Ускорение_выключить″

End Sub

↑ ↑ ↑ ↑

Скриншот этого макроса – на рисунке 2.31:


Рисунок 2.31.


Ну и, во-вторых, клетки можно именовать по принципу кле_А1, кле_А2, кле_А3 и т. д. Вот текст макроса, который присваивает имена клеткам судоку по принципу №2:

↓ ↓ ↓ ↓

Sub Имена_основным_клеткам_2 ()

Application.Run ″Судоку_2020.xlsm! Ускорение_включить″

For i = 1 To 9

For j = 1 To 9

Cells (i +2, j + 2).Select

ActiveWorkbook.Names.Add Name:=″кле_″ & _

Cells (i +2, 2) & Cells (2, j +2), RefersToR1C1:= _

″=Основное_судоку! R″ & i +2 & ″C″ & j +2

ActiveWorkbook.Names.Add Name:=″bs..кле_″ & _

Cells (i +2, 2) & Cells (2, j +2), RefersToR1C1:= _

″=Основное_судоку! R″ & i +2 & ″C″ & j +2

Next j

Next i

Application.Run ″Судоку_2020.xlsm! Ускорение_выключить″

End Sub

↑ ↑ ↑ ↑

Скриншот этого макроса покажем на рисунке 2.32.


Рисунок 2.32.


Можно объединить в одном макросе оба эти принципа (номер один и номер два). В этом случае текст макроса будет таким:

↓ ↓ ↓ ↓

Sub Имена_основным_клеткам_3 ()

Application.Run ″Судоку_2020.xlsm! Ускорение_включить″

For i = 1 To 9

For j = 1 To 9

Cells (i +2, j + 2).Select

ActiveWorkbook.Names.Add Name:=″кле_″ & _

i & j, RefersToR1C1:= _

″=Основное_судоку! R″ & i +2 & ″C″ & j +2

ActiveWorkbook.Names.Add Name:=″bs..кле_″ & _

i & j, RefersToR1C1:= _

″=Основное_судоку! R″ & i +2 & ″C″ & j +2

ActiveWorkbook.Names.Add Name:=″кле_″ & _

Cells (i +2, 2) & Cells (2, j +2), RefersToR1C1:= _

″=Основное_судоку! R″ & i +2 & ″C″ & j +2

ActiveWorkbook.Names.Add Name:=″bs..кле_″ & _

Cells (i +2, 2) & Cells (2, j +2), RefersToR1C1:= _

″=Основное_судоку! R″ & i +2 & ″C″ & j +2

Next j

Next i

Application.Run ″Судоку_2020.xlsm! Ускорение_выключить″

End Sub

↑ ↑ ↑ ↑

Скриншот этого макроса находится на рисунке 2.33.


Рисунок 2.33.


Как и прежде, можно вводить в макрос новые дополнительные переменные. Например, m (m=i+2), а также n (n=j+2).

В этом случае этот макрос примет следующий вид:

↓ ↓ ↓ ↓

Sub Имена_основным_клеткам_3 ()

Application.Run ″Судоку_2020.xlsm! Ускорение_включить″

For i = 1 To 9

For j = 1 To 9

m=i+2

n=j+2

Cells (m, n).Select

ActiveWorkbook.Names.Add Name:=″кле_″ & _

i & j, RefersToR1C1:= _

″=Основное_судоку! R″ & m & ″C″ & n

ActiveWorkbook.Names.Add Name:=″bs..кле_″ & _

i & j, RefersToR1C1:= _

″=Основное_судоку! R″ & m & ″C″ & n

ActiveWorkbook.Names.Add Name:=″кле_″ & _

Cells (m, 2) & Cells (2, n), RefersToR1C1:= _

″=Основное_судоку! R″ & m & ″C″ & n

ActiveWorkbook.Names.Add Name:=″bs..кле_″ & _

Cells (m, 2) & Cells (2, n), RefersToR1C1:= _

″=Основное_судоку! R″ & m & ″C″ & n

Next j

Next i

Application.Run ″Судоку_2020.xlsm! Ускорение_выключить″

End Sub

↑ ↑ ↑ ↑

Покажем скриншот этого макроса на рисунке 2.34.


Рисунок 2.34.


Вот, в принципе, и всё, что можно сказать о присвоении имен самым главным элементам основного судоку.

2.3.6. Еще несколько имен

Мы присвоили имена строкам, столбцам, квадратикам (блокам) основного судоку, а также каждой клетке основного судоку.

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

Этой клетке можно присвоить имя даже без макроса. Это имя будет простым:

КЧ

Буквы русские, прописные. Сокращение от словосочетания «контрольное число».

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

bs..КЧ

На страницу:
4 из 7