Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/АвтоЗамена в ДиапЯч функций на их значения по ВнешУсловиям - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
АвтоЗамена в ДиапЯч функций на их значения по ВнешУсловиям
Ale_ko Дата: Вторник, 12.12.2017, 13:16 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Здравствуйте, уважаемые!
Прошу Вас помочь словом/делом.

Есть: длинная горизонтальная таблица, почти в каждой ячейке которой формулы. Эта таблица и есть ЦЕЛЕВОЙ ДИАПАЗОН (назову её так) строки [1-31].

Строка 1 "несёт" контрольное значение (дату "сегодня"), формула ежедневно "перемещает" треугольник вправо.

Строки [2...5] - строки дат (строки 2 и 3 - вид, удобный для пользователя - виден и заблокирован, строка 5 - вид, "удобный" для Excel - скрыт от пользователя).

В Целевом Диапазоне более половины строк несут формулы. Они заблокированы чтобы случайно не "зацепить" формул. Часть этих строк - служебные расчеты - вообще скрыты от пользователя.
При установке ЗАЩИТЫ ЛИСТА галочками разрешаю:
- выделение незаблокированных ячеек
- форматирование ячеек
- изменение объектов
Всё остальные галочки сняты.

Из практики: файл запускается ежедневно. Но иногда бывает 2...4 дня пропуска.
------ ------
Требуется:
------
1. формулы ячеек Целевого Диапазона [M1 : ##31] заменить на их значения.
Правая граница диапазона - от "вчера" включительно и влево до колонки M по строкам 1...31.

Т.е. если Я запускаю книгу сегодня, то треугольничек (маркер "сегодня") будет на ячейке CG1 напротив 12.12.2017 в ячейке CG5 (промежуточные CG2:CG4 не описываю как не имеющие важность для задачи). При этом нужно чтобы [M1:CF31] был автоматически переписан с формул на их значения.
При запуске файла завтра треугольничек уже будет в ячейке CH1, и диапазон перезаписи уже изменится на [M1:CG31].
Разумеется можно не перезаписывать каждый день весь диапазон, а перезаписывать только вчерашний (т.е. если для "сегодня" = 12.12.2017 - то перезаписать только вчерашний [CF1:CF31]), но т.к. возможны пропуски в открытии файла до недели, то тогда лучше брать с запасом 5...7 дней "во вчера", т.е [BZ1:CF31].
------
2. Также отталкиваясь от даты "сегодня" в прошлое и будущее, автоматически прятать (скрывать) колонки (от [M включительно) со "старостью" более допустим 2х месяцев "назад" (влево), и "вперед" (вправо) колонки более пусть 1 месяца и до конца таблицы.

Т.е. на "сегодня" останется отображаемым (слева - направо):
колонки ["A"..."L"] : отображаются всегда
колонки ["M":"W"(... 2 месяца влево от "сегодня")] : ежедневно автоматически скрываются.
колонки ["X"..."DK"] : отображаются на день "сегодня" = 12.12.2017.
колонки ["DL":"конца таблицы"] : автоматически скрыты.
------ ------
Еще раз прошу Вас обратить внимание на особенности:
- защищенного листа;
- эпизодические пропуски в запусках файла 2...4 дня (т.е. ширина ежедневного диапазона проверки скрыта/не скрыта колонка в диапазоне [L...2 мес.от "сегодня"]);
- во многих ячейках Целевого Диапазона, куда пользователь вводит определенные метки, имеются примечания - их нельзя потерять.
------ ------
VBA я только начал изучать - по мере наличия времени, такое я в ближайшие месяцы не потяну.
А вот наглядный и актуальный пример для обучения будет прекрасным.
Спасибо, что уделили внимание.
К сообщению приложен файл: 2-.xlsx (86.7 Kb)
 
Ответить
СообщениеЗдравствуйте, уважаемые!
Прошу Вас помочь словом/делом.

Есть: длинная горизонтальная таблица, почти в каждой ячейке которой формулы. Эта таблица и есть ЦЕЛЕВОЙ ДИАПАЗОН (назову её так) строки [1-31].

Строка 1 "несёт" контрольное значение (дату "сегодня"), формула ежедневно "перемещает" треугольник вправо.

Строки [2...5] - строки дат (строки 2 и 3 - вид, удобный для пользователя - виден и заблокирован, строка 5 - вид, "удобный" для Excel - скрыт от пользователя).

В Целевом Диапазоне более половины строк несут формулы. Они заблокированы чтобы случайно не "зацепить" формул. Часть этих строк - служебные расчеты - вообще скрыты от пользователя.
При установке ЗАЩИТЫ ЛИСТА галочками разрешаю:
- выделение незаблокированных ячеек
- форматирование ячеек
- изменение объектов
Всё остальные галочки сняты.

Из практики: файл запускается ежедневно. Но иногда бывает 2...4 дня пропуска.
------ ------
Требуется:
------
1. формулы ячеек Целевого Диапазона [M1 : ##31] заменить на их значения.
Правая граница диапазона - от "вчера" включительно и влево до колонки M по строкам 1...31.

Т.е. если Я запускаю книгу сегодня, то треугольничек (маркер "сегодня") будет на ячейке CG1 напротив 12.12.2017 в ячейке CG5 (промежуточные CG2:CG4 не описываю как не имеющие важность для задачи). При этом нужно чтобы [M1:CF31] был автоматически переписан с формул на их значения.
При запуске файла завтра треугольничек уже будет в ячейке CH1, и диапазон перезаписи уже изменится на [M1:CG31].
Разумеется можно не перезаписывать каждый день весь диапазон, а перезаписывать только вчерашний (т.е. если для "сегодня" = 12.12.2017 - то перезаписать только вчерашний [CF1:CF31]), но т.к. возможны пропуски в открытии файла до недели, то тогда лучше брать с запасом 5...7 дней "во вчера", т.е [BZ1:CF31].
------
2. Также отталкиваясь от даты "сегодня" в прошлое и будущее, автоматически прятать (скрывать) колонки (от [M включительно) со "старостью" более допустим 2х месяцев "назад" (влево), и "вперед" (вправо) колонки более пусть 1 месяца и до конца таблицы.

Т.е. на "сегодня" останется отображаемым (слева - направо):
колонки ["A"..."L"] : отображаются всегда
колонки ["M":"W"(... 2 месяца влево от "сегодня")] : ежедневно автоматически скрываются.
колонки ["X"..."DK"] : отображаются на день "сегодня" = 12.12.2017.
колонки ["DL":"конца таблицы"] : автоматически скрыты.
------ ------
Еще раз прошу Вас обратить внимание на особенности:
- защищенного листа;
- эпизодические пропуски в запусках файла 2...4 дня (т.е. ширина ежедневного диапазона проверки скрыта/не скрыта колонка в диапазоне [L...2 мес.от "сегодня"]);
- во многих ячейках Целевого Диапазона, куда пользователь вводит определенные метки, имеются примечания - их нельзя потерять.
------ ------
VBA я только начал изучать - по мере наличия времени, такое я в ближайшие месяцы не потяну.
А вот наглядный и актуальный пример для обучения будет прекрасным.
Спасибо, что уделили внимание.

Автор - Ale_ko
Дата добавления - 12.12.2017 в 13:16
Ale_ko Дата: Среда, 13.12.2017, 20:00 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
То ли я оформил что-то не так, то ли написал что-то не то... :(
 
Ответить
СообщениеТо ли я оформил что-то не так, то ли написал что-то не то... :(

Автор - Ale_ko
Дата добавления - 13.12.2017 в 20:00
Ale_ko Дата: Четверг, 14.12.2017, 14:02 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
ЛЮДИ... может кто помочь? Очень прошу!!
 
Ответить
СообщениеЛЮДИ... может кто помочь? Очень прошу!!

Автор - Ale_ko
Дата добавления - 14.12.2017 в 14:02
sboy Дата: Четверг, 14.12.2017, 14:16 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
Помочь то могут многие, но с таким ТЗ Вам сюда, а для этой ветки слишком много хотелок при нулевом Вашем участии.


Яндекс: 410016850021169
 
Ответить
СообщениеДобрый день.
Помочь то могут многие, но с таким ТЗ Вам сюда, а для этой ветки слишком много хотелок при нулевом Вашем участии.

Автор - sboy
Дата добавления - 14.12.2017 в 14:16
Ale_ko Дата: Суббота, 23.12.2017, 20:10 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
sboy, количество и объём хотелок определяется не "помогающими этим", да и Я не говорил, что моё участие будет нулевым. Возможно, и скорее всего, достаточно было подсказать направления изучений...
Ладно. Ошибся Я. Не нужно было мне сюда обращаться...
Да, и ошибся Я с тем, что "такое я в ближайшие месяцы не потяну".

Всем обращающимся сюда, и на другие ресурсы за ПОМОЩЬЮ!
Я качнул 4 книжки по VBA и изучая их (выискивая то, что "возможно бы подошло"), дополнительно погуглил, и в течение трёх дней нарисовал код. САМ! Это не так сложно, как кажется поначалу!
Нет, конечно же Я не стану лукавить, опыт программирования у меня есть, но давно это было, и ООП языки тогда только "начинались"... Но, тем не менее, это не сложно! Читайте, разбирайтесь. Напишите единожды, будете после писать с лёгкостью. Люди, а "этим" НЕ платите.
А Вам, Программисты! Ой, нет, не так: "программисты" - это не тот труд, за который деньги берут! Стыдно! Мельчает нынче ПРОГРАММИСТ...
Это не 6000 строк кода (не "китайского") за ночь, заставляющего программу делать то, на что она не способна по определению. Не хочу продолжать!
 
Ответить
Сообщениеsboy, количество и объём хотелок определяется не "помогающими этим", да и Я не говорил, что моё участие будет нулевым. Возможно, и скорее всего, достаточно было подсказать направления изучений...
Ладно. Ошибся Я. Не нужно было мне сюда обращаться...
Да, и ошибся Я с тем, что "такое я в ближайшие месяцы не потяну".

Всем обращающимся сюда, и на другие ресурсы за ПОМОЩЬЮ!
Я качнул 4 книжки по VBA и изучая их (выискивая то, что "возможно бы подошло"), дополнительно погуглил, и в течение трёх дней нарисовал код. САМ! Это не так сложно, как кажется поначалу!
Нет, конечно же Я не стану лукавить, опыт программирования у меня есть, но давно это было, и ООП языки тогда только "начинались"... Но, тем не менее, это не сложно! Читайте, разбирайтесь. Напишите единожды, будете после писать с лёгкостью. Люди, а "этим" НЕ платите.
А Вам, Программисты! Ой, нет, не так: "программисты" - это не тот труд, за который деньги берут! Стыдно! Мельчает нынче ПРОГРАММИСТ...
Это не 6000 строк кода (не "китайского") за ночь, заставляющего программу делать то, на что она не способна по определению. Не хочу продолжать!

Автор - Ale_ko
Дата добавления - 23.12.2017 в 20:10
Ale_ko Дата: Суббота, 23.12.2017, 20:11 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Ну и... тем, кому нужна будет схожая задача, выкидываю код:
"Эта книга"
[vba]
Код

Private Sub Workbook_Open()                 '****** запускаем КОД при открытии Книги ******'
  '_____________ определение ЗАЩИТЫ ЛИСТА с разрешением работы КОДУ _____________'
    Sheets("процесс").Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
        True, AllowFormattingCells:=True, UserInterfaceOnly:=True
  '_____________ действия КОДА на листе _____________'
    FtoV = -6       'глубина перезаписи, дней (вниз+ вправо+, тут влево-)
    WtoLeft = 60    'ОКНО левее СЕГОДНЯ
    WtoRight = 20   'ОКНО правее СЕГОДНЯ
  '_____________'
    Dim dateToday
            dateToday = Date
    Dim cell As Range
    Application.ScreenUpdating = False                      'отключаем обновление экрана для ускорения
    For Each cell In Worksheets("процесс").UsedRange.Rows(5).Cells    'проходим по всем ячейкам строки 5
        If cell.Value = dateToday Then                      'если в значение в ячейке = ДатаСегодня ->
          '_____________ перезапись функций их значениями в ползущем диапазоне ячеек _____________'
            Range(cell.Offset(-1, -3), cell.Offset(123, FtoV)).Formula = Range(cell.Offset(-1, -3), cell.Offset(123, FtoV)).Value
                'одновременно задаём сещениями диапазон в стороках [4...128] и перезаписываем формулы их значениями
          '_____________ ОКНО _____________'
            adrCOLUMN = cell.Column                         'получаю адрес в R1C1 колонки, где даты равны
            iColumnX = Worksheets("процесс").UsedRange.Column + Worksheets("процесс").UsedRange.Columns.Count - 1
                    'тут посчитали количество используемых (UsedRange)
                    'ячеек вообще - как ПРАВАЯ граница
            For i = 13 To iColumnX                          'от ЛЕВОЙ до ПРАВОЙ границы
                If i < (adrCOLUMN - WtoLeft) Or i > (adrCOLUMN + WtoRight) Then
                    Cells(i).EntireColumn.Hidden = True     'то скрыть i-колонку
                End If
                If i > adrCOLUMN And i <= (adrCOLUMN + WtoRight) Then
                    Cells(i).EntireColumn.Hidden = False    'показываем колонку [i...Пр.Граница]
                End If
            Next
          '_____________ ОКНО _____________'
        End If
    Next cell
    Application.ScreenUpdating = True                       'включаем обновление экрана
    Worksheets("процесс").Cells(7, adrCOLUMN).Select
End Sub
[/vba]


Сообщение отредактировал Ale_ko - Суббота, 23.12.2017, 20:17
 
Ответить
СообщениеНу и... тем, кому нужна будет схожая задача, выкидываю код:
"Эта книга"
[vba]
Код

Private Sub Workbook_Open()                 '****** запускаем КОД при открытии Книги ******'
  '_____________ определение ЗАЩИТЫ ЛИСТА с разрешением работы КОДУ _____________'
    Sheets("процесс").Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
        True, AllowFormattingCells:=True, UserInterfaceOnly:=True
  '_____________ действия КОДА на листе _____________'
    FtoV = -6       'глубина перезаписи, дней (вниз+ вправо+, тут влево-)
    WtoLeft = 60    'ОКНО левее СЕГОДНЯ
    WtoRight = 20   'ОКНО правее СЕГОДНЯ
  '_____________'
    Dim dateToday
            dateToday = Date
    Dim cell As Range
    Application.ScreenUpdating = False                      'отключаем обновление экрана для ускорения
    For Each cell In Worksheets("процесс").UsedRange.Rows(5).Cells    'проходим по всем ячейкам строки 5
        If cell.Value = dateToday Then                      'если в значение в ячейке = ДатаСегодня ->
          '_____________ перезапись функций их значениями в ползущем диапазоне ячеек _____________'
            Range(cell.Offset(-1, -3), cell.Offset(123, FtoV)).Formula = Range(cell.Offset(-1, -3), cell.Offset(123, FtoV)).Value
                'одновременно задаём сещениями диапазон в стороках [4...128] и перезаписываем формулы их значениями
          '_____________ ОКНО _____________'
            adrCOLUMN = cell.Column                         'получаю адрес в R1C1 колонки, где даты равны
            iColumnX = Worksheets("процесс").UsedRange.Column + Worksheets("процесс").UsedRange.Columns.Count - 1
                    'тут посчитали количество используемых (UsedRange)
                    'ячеек вообще - как ПРАВАЯ граница
            For i = 13 To iColumnX                          'от ЛЕВОЙ до ПРАВОЙ границы
                If i < (adrCOLUMN - WtoLeft) Or i > (adrCOLUMN + WtoRight) Then
                    Cells(i).EntireColumn.Hidden = True     'то скрыть i-колонку
                End If
                If i > adrCOLUMN And i <= (adrCOLUMN + WtoRight) Then
                    Cells(i).EntireColumn.Hidden = False    'показываем колонку [i...Пр.Граница]
                End If
            Next
          '_____________ ОКНО _____________'
        End If
    Next cell
    Application.ScreenUpdating = True                       'включаем обновление экрана
    Worksheets("процесс").Cells(7, adrCOLUMN).Select
End Sub
[/vba]

Автор - Ale_ko
Дата добавления - 23.12.2017 в 20:11
Ale_ko Дата: Суббота, 23.12.2017, 20:18 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Модуль1
[vba]
Код

Sub HideRows()
    Dim cell As Range
    Application.ScreenUpdating = False                          'отключаем обновление экрана для ускорения
    For Each cell In ActiveSheet.UsedRange.Columns(1).Cells     'проходим по всем ячейкам первого столбца
        If cell.Value = "x" Then cell.EntireRow.Hidden = True   'если в ячейке x - скрываем строку
    Next
    Application.ScreenUpdating = True                           'включаем обновление экрана
End Sub
Sub ShowRows()
    Rows.Hidden = False         'отменяем все скрытия строк
End Sub
Sub ShowColumns()
    Columns.Hidden = False      'отменяем все скрытия строк
End Sub
[/vba]
 
Ответить
СообщениеМодуль1
[vba]
Код

Sub HideRows()
    Dim cell As Range
    Application.ScreenUpdating = False                          'отключаем обновление экрана для ускорения
    For Each cell In ActiveSheet.UsedRange.Columns(1).Cells     'проходим по всем ячейкам первого столбца
        If cell.Value = "x" Then cell.EntireRow.Hidden = True   'если в ячейке x - скрываем строку
    Next
    Application.ScreenUpdating = True                           'включаем обновление экрана
End Sub
Sub ShowRows()
    Rows.Hidden = False         'отменяем все скрытия строк
End Sub
Sub ShowColumns()
    Columns.Hidden = False      'отменяем все скрытия строк
End Sub
[/vba]

Автор - Ale_ko
Дата добавления - 23.12.2017 в 20:18
Ale_ko Дата: Суббота, 23.12.2017, 20:18 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Модуль2 ("бонус" - кнопка СЕГОДНЯ)
[vba]
Код

Sub кнопка_СЕГОДНЯ()
    Dim dateToday
            dateToday = Date                    'dateToday contains the current system date.
    Dim cell As Range
    For Each cell In Worksheets("процесс").UsedRange.Rows(5).Cells    'проходим по всем ячейкам строки 5
        If cell.Value = dateToday Then                      'если в значение в ячейке = ДатаСегодня ->
            adrCOLUMN = cell.Column                         'получаю адрес в R1C1 колонки, где даты равны
        End If
    Next cell
    Worksheets("процесс").Cells(7, adrCOLUMN).Select
End Sub
[/vba]
 
Ответить
СообщениеМодуль2 ("бонус" - кнопка СЕГОДНЯ)
[vba]
Код

Sub кнопка_СЕГОДНЯ()
    Dim dateToday
            dateToday = Date                    'dateToday contains the current system date.
    Dim cell As Range
    For Each cell In Worksheets("процесс").UsedRange.Rows(5).Cells    'проходим по всем ячейкам строки 5
        If cell.Value = dateToday Then                      'если в значение в ячейке = ДатаСегодня ->
            adrCOLUMN = cell.Column                         'получаю адрес в R1C1 колонки, где даты равны
        End If
    Next cell
    Worksheets("процесс").Cells(7, adrCOLUMN).Select
End Sub
[/vba]

Автор - Ale_ko
Дата добавления - 23.12.2017 в 20:18
Pelena Дата: Суббота, 23.12.2017, 20:23 | Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 19603
Репутация: 4660 ±
Замечаний: ±

Excel 365 & Mac Excel
Ale_ko, не совсем понятны Ваши, не знаю как сказать, обиды или претензии.
Есть Правила форума, в которых однозначно сказано: один вопрос - одна тема. Если бы вняли совету из поста 4 и разбили задачу на отдельные вопросы, то и помощь получили бы быстрее.
Просто на этом форуме не принято помогать нарушителям Правил.
А за то, что поделились решением, спасибо


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеAle_ko, не совсем понятны Ваши, не знаю как сказать, обиды или претензии.
Есть Правила форума, в которых однозначно сказано: один вопрос - одна тема. Если бы вняли совету из поста 4 и разбили задачу на отдельные вопросы, то и помощь получили бы быстрее.
Просто на этом форуме не принято помогать нарушителям Правил.
А за то, что поделились решением, спасибо

Автор - Pelena
Дата добавления - 23.12.2017 в 20:23
Ale_ko Дата: Суббота, 23.12.2017, 20:42 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Исходный файл один?
Действия выполняются над одним объектом?
Глупо 4-жды объяснять одно и тоже, с заменой узких целей, часть из которых, кстати, лежит даже внутри одного цикла. И как же тогда, человек несведущий в VBA, скомпоновал бы все корректно в один код? Вот это была бы дискуссия эдак месяца на 2...3


Сообщение отредактировал Ale_ko - Суббота, 23.12.2017, 20:48
 
Ответить
СообщениеИсходный файл один?
Действия выполняются над одним объектом?
Глупо 4-жды объяснять одно и тоже, с заменой узких целей, часть из которых, кстати, лежит даже внутри одного цикла. И как же тогда, человек несведущий в VBA, скомпоновал бы все корректно в один код? Вот это была бы дискуссия эдак месяца на 2...3

Автор - Ale_ko
Дата добавления - 23.12.2017 в 20:42
Ale_ko Дата: Суббота, 23.12.2017, 20:51 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

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

Автор - Ale_ko
Дата добавления - 23.12.2017 в 20:51
Pelena Дата: Суббота, 23.12.2017, 21:01 | Сообщение № 12
Группа: Админы
Ранг: Местный житель
Сообщений: 19603
Репутация: 4660 ±
Замечаний: ±

Excel 365 & Mac Excel
И тем не менее, Правила общие для всех и
для некоторых случаев
корректироваться не должны


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеИ тем не менее, Правила общие для всех и
для некоторых случаев
корректироваться не должны

Автор - Pelena
Дата добавления - 23.12.2017 в 21:01
Ale_ko Дата: Суббота, 23.12.2017, 21:22 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Ну конечно!

Всем удачи!
 
Ответить
СообщениеНу конечно!

Всем удачи!

Автор - Ale_ko
Дата добавления - 23.12.2017 в 21:22
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2026 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!