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

Вход

Регистрация

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

 

= Мир MS Excel/показать скрытые строки - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
показать скрытые строки
graffserg Дата: Вторник, 16.01.2018, 18:33 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 84
Репутация: 1 ±
Замечаний: 0% ±

2010
Уважаемые форумчане!!
Помогите с решением вопроса.
Имеется книга, на ней множество листов с информацией (фрукты, крупы и т.д.). Часть данных на листы вносятся с помощью "Выпадающего списока с добавлением новых элементов", которые находятся на листе "данные". Лист "итоги" служит для обобщения данных по годам и наименованию.
Необходима Ваша помощь, в написании макроса для листа "итоги", который в свою очередь реагировал бы на пустые строки и соответсвенно скрывал их (в моем случае строки A6:A19 и B24:B37). Если, к примеру, добавляются новые сведения по продукции, то они автоматически добавляются в "итоги" и заполненная строка отображается.
Спасибо.
К сообщению приложен файл: 8070653.xlsm (26.7 Kb)
 
Ответить
СообщениеУважаемые форумчане!!
Помогите с решением вопроса.
Имеется книга, на ней множество листов с информацией (фрукты, крупы и т.д.). Часть данных на листы вносятся с помощью "Выпадающего списока с добавлением новых элементов", которые находятся на листе "данные". Лист "итоги" служит для обобщения данных по годам и наименованию.
Необходима Ваша помощь, в написании макроса для листа "итоги", который в свою очередь реагировал бы на пустые строки и соответсвенно скрывал их (в моем случае строки A6:A19 и B24:B37). Если, к примеру, добавляются новые сведения по продукции, то они автоматически добавляются в "итоги" и заполненная строка отображается.
Спасибо.

Автор - graffserg
Дата добавления - 16.01.2018 в 18:33
Mikael Дата: Вторник, 16.01.2018, 19:13 | Сообщение № 2
Группа: Пользователи
Ранг: Участник
Сообщений: 80
Репутация: 31 ±
Замечаний: 0% ±

Excel 2010
Добрый день!
Вот такой вариант:
При любом изменении ячеек на листе "данные", проверяем на нули 1 столбец листа "итоги", если 0 - скрыть строку, в противном случае показать.
Добавьте обработчик в модуль листа "данные".
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rCell As Range
    With Sheets("итоги")
        For Each rCell In .Cells(.UsedRange.Row, 1).Resize(.UsedRange.Rows.Count)
            If Not IsEmpty(rCell) Then rCell.EntireRow.Hidden = IIf(rCell.Value = 0, True, False)
        Next rCell
    End With
End Sub
[/vba]
К сообщению приложен файл: CellsShowHide.xlsm (28.0 Kb)


Сообщение отредактировал Mikael - Вторник, 16.01.2018, 19:18
 
Ответить
СообщениеДобрый день!
Вот такой вариант:
При любом изменении ячеек на листе "данные", проверяем на нули 1 столбец листа "итоги", если 0 - скрыть строку, в противном случае показать.
Добавьте обработчик в модуль листа "данные".
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rCell As Range
    With Sheets("итоги")
        For Each rCell In .Cells(.UsedRange.Row, 1).Resize(.UsedRange.Rows.Count)
            If Not IsEmpty(rCell) Then rCell.EntireRow.Hidden = IIf(rCell.Value = 0, True, False)
        Next rCell
    End With
End Sub
[/vba]

Автор - Mikael
Дата добавления - 16.01.2018 в 19:13
graffserg Дата: Среда, 17.01.2018, 10:06 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 84
Репутация: 1 ±
Замечаний: 0% ±

2010
Спасибо Mikael огромное!!! Макрос работает, но есть одно но, или даже несколько.
Дело в том, что в реальном примере, на листе «итоги» присутствует кнопка(и) (своего рода сопоставление данных по годам), которые отображают/скрывают суммарную информацию о работе сотрудника с других листов и к ним прикреплен макрос:
[vba]
Код
Sub Click_2014()
Worksheets("итоги").Unprotect Password:="123456"
Columns("J:V").Hidden = IIf(Columns("J:V").Hidden, False, True)
Worksheets("итоги").Protect Password:="123456"
End Sub
[/vba]
Соответственно, когда срабатывает макрос, то он автоматически делает видимыми все ранее скрытые строки, которые спрятал предыдущий макрос.
Возможно, ли сделать так, чтобы макрос, который написали Вы:
1. реагировал на изменения и скрывал строки только в определенном диапазоне(ах), например A10:A40, A45:A60, A70:A90 и т.д.?
2. работал на нескольких листах, например «итоги» и «итоги_2»?
И еще:
- практически все листы в книге скрываются автоматически, т.к. используется оглавление;
- практически все защищены паролем, от «кривых» рук и ввод данных разрешен в определенных ячейках.
Спасибо!!
 
Ответить
СообщениеСпасибо Mikael огромное!!! Макрос работает, но есть одно но, или даже несколько.
Дело в том, что в реальном примере, на листе «итоги» присутствует кнопка(и) (своего рода сопоставление данных по годам), которые отображают/скрывают суммарную информацию о работе сотрудника с других листов и к ним прикреплен макрос:
[vba]
Код
Sub Click_2014()
Worksheets("итоги").Unprotect Password:="123456"
Columns("J:V").Hidden = IIf(Columns("J:V").Hidden, False, True)
Worksheets("итоги").Protect Password:="123456"
End Sub
[/vba]
Соответственно, когда срабатывает макрос, то он автоматически делает видимыми все ранее скрытые строки, которые спрятал предыдущий макрос.
Возможно, ли сделать так, чтобы макрос, который написали Вы:
1. реагировал на изменения и скрывал строки только в определенном диапазоне(ах), например A10:A40, A45:A60, A70:A90 и т.д.?
2. работал на нескольких листах, например «итоги» и «итоги_2»?
И еще:
- практически все листы в книге скрываются автоматически, т.к. используется оглавление;
- практически все защищены паролем, от «кривых» рук и ввод данных разрешен в определенных ячейках.
Спасибо!!

Автор - graffserg
Дата добавления - 17.01.2018 в 10:06
Mikael Дата: Среда, 17.01.2018, 11:56 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 80
Репутация: 31 ±
Замечаний: 0% ±

Excel 2010
1. реагировал на изменения и скрывал строки только в определенном диапазоне(ах), например A10:A40, A45:A60, A70:A90 и т.д.?

Можно.
[vba]
Код
For Each rCell In .Range("A10:A40, A45:A60, A70:A90")
[/vba]
Но сразу возникает вопрос: на всех листах "итоги_n" диапазоны одинаковые?

2. работал на нескольких листах, например «итоги» и «итоги_2»?

[vba]
Код
For Each Sh In Array("итоги", "итоги_2", ... , "итоги_n")
[/vba]

все вместе будет выглядеть так (диапазоны из Вашего файла в 1 посте):
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rCell As Range, Sh As Variant
    For Each Sh In Array("итоги", "итоги_2")
        For Each rCell In Sheets(Sh).Range("A6:A19, A24:A37")
            If Not IsEmpty(rCell) Then rCell.EntireRow.Hidden = IIf(rCell.Value = 0, True, False)
        Next rCell
    Next Sh
End Sub
[/vba]
С файлом, который ближе к реальности, было бы проще Вам помочь.
 
Ответить
Сообщение
1. реагировал на изменения и скрывал строки только в определенном диапазоне(ах), например A10:A40, A45:A60, A70:A90 и т.д.?

Можно.
[vba]
Код
For Each rCell In .Range("A10:A40, A45:A60, A70:A90")
[/vba]
Но сразу возникает вопрос: на всех листах "итоги_n" диапазоны одинаковые?

2. работал на нескольких листах, например «итоги» и «итоги_2»?

[vba]
Код
For Each Sh In Array("итоги", "итоги_2", ... , "итоги_n")
[/vba]

все вместе будет выглядеть так (диапазоны из Вашего файла в 1 посте):
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rCell As Range, Sh As Variant
    For Each Sh In Array("итоги", "итоги_2")
        For Each rCell In Sheets(Sh).Range("A6:A19, A24:A37")
            If Not IsEmpty(rCell) Then rCell.EntireRow.Hidden = IIf(rCell.Value = 0, True, False)
        Next rCell
    Next Sh
End Sub
[/vba]
С файлом, который ближе к реальности, было бы проще Вам помочь.

Автор - Mikael
Дата добавления - 17.01.2018 в 11:56
fan-vba Дата: Среда, 17.01.2018, 12:32 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 10 ±
Замечаний: 0% ±

Excel 2007
С файлом, который ближе к реальности, было бы проще Вам помочь.

это верно!

Посмотрите, может это Вам чем то поможет

[vba]
Код
Public vid As Boolean 'значение true или false (дополнительно передаем переменную на кнопку)
Sub скрытие_отображение()
    Dim irows As Range
    Dim inabor As Range
    
    name_ch = "итоги" 'здесь мы будем присваивать имя листа
    On Error Resume Next 'защита от ошибки, если условие не выполнится ни разу
    
    Worksheets(name_ch).Unprotect Password:="123456"
    
    For i = 5 To 100 'пребор строк с 5 по 100
     If Worksheets(name_ch).Cells(i, 1) > 5 Then 'любое условие для скрытия/отображения из 1 столбца
      Set irows = Worksheets(name_ch).Rows(i & ":" & i) 'запоминаем строку, если сработало условие
       If inabor Is Nothing Then 'условие для задания первой строки и последующего добавления новых строк
       Set inabor = irows 'задаем первую строку в пустой набор
       Else
       Set inabor = Union(inabor, irows) 'добавляем строки по условию к существующему набору
       End If
     End If
    Next i
       
    inabor.EntireRow.Hidden = vid 'скрываем/отображаем наш набор строк
    
    Worksheets(name_ch).Protect Password:="123456"
End Sub
[/vba]

и для кнопки на листе

[vba]
Код
Private Sub CommandButton1_Click()
Worksheets("итоги").Unprotect Password:="123456"
If vid = False Then
vid = True
Else
vid = False
End If
скрытие_отображение
End Sub
[/vba]
 
Ответить
Сообщение
С файлом, который ближе к реальности, было бы проще Вам помочь.

это верно!

Посмотрите, может это Вам чем то поможет

[vba]
Код
Public vid As Boolean 'значение true или false (дополнительно передаем переменную на кнопку)
Sub скрытие_отображение()
    Dim irows As Range
    Dim inabor As Range
    
    name_ch = "итоги" 'здесь мы будем присваивать имя листа
    On Error Resume Next 'защита от ошибки, если условие не выполнится ни разу
    
    Worksheets(name_ch).Unprotect Password:="123456"
    
    For i = 5 To 100 'пребор строк с 5 по 100
     If Worksheets(name_ch).Cells(i, 1) > 5 Then 'любое условие для скрытия/отображения из 1 столбца
      Set irows = Worksheets(name_ch).Rows(i & ":" & i) 'запоминаем строку, если сработало условие
       If inabor Is Nothing Then 'условие для задания первой строки и последующего добавления новых строк
       Set inabor = irows 'задаем первую строку в пустой набор
       Else
       Set inabor = Union(inabor, irows) 'добавляем строки по условию к существующему набору
       End If
     End If
    Next i
       
    inabor.EntireRow.Hidden = vid 'скрываем/отображаем наш набор строк
    
    Worksheets(name_ch).Protect Password:="123456"
End Sub
[/vba]

и для кнопки на листе

[vba]
Код
Private Sub CommandButton1_Click()
Worksheets("итоги").Unprotect Password:="123456"
If vid = False Then
vid = True
Else
vid = False
End If
скрытие_отображение
End Sub
[/vba]

Автор - fan-vba
Дата добавления - 17.01.2018 в 12:32
graffserg Дата: Среда, 17.01.2018, 12:35 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 84
Репутация: 1 ±
Замечаний: 0% ±

2010
Но сразу возникает вопрос: на всех листах "итоги_n" диапазоны одинаковые?

Диапазон на всех листах разный.
Спасибо счас буду пробовать
 
Ответить
Сообщение
Но сразу возникает вопрос: на всех листах "итоги_n" диапазоны одинаковые?

Диапазон на всех листах разный.
Спасибо счас буду пробовать

Автор - graffserg
Дата добавления - 17.01.2018 в 12:35
graffserg Дата: Среда, 17.01.2018, 13:15 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 84
Репутация: 1 ±
Замечаний: 0% ±

2010
уважаемый Mikael, попробовал!
Увы, с учетом того, что диапазон на листах разный макрос работать отказывается, а вот если оставить только один лист - макрос работает замечательно.
И еще вопрос - как быть, если лист защищен паролем?
Вам fan-vba тоже огромное спасибо! Буду пробовать.
 
Ответить
Сообщениеуважаемый Mikael, попробовал!
Увы, с учетом того, что диапазон на листах разный макрос работать отказывается, а вот если оставить только один лист - макрос работает замечательно.
И еще вопрос - как быть, если лист защищен паролем?
Вам fan-vba тоже огромное спасибо! Буду пробовать.

Автор - graffserg
Дата добавления - 17.01.2018 в 13:15
Mikael Дата: Среда, 17.01.2018, 13:55 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 80
Репутация: 31 ±
Замечаний: 0% ±

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

Поэтому я и задал этот вопрос. Тут есть пара вариантов решения.
Если Вы знаете диапазоны для каждого листа, можно перебрать их через select case перед вложенным циклом, примерно так:
[vba]
Код
Select Case Sh
    Case "итоги"
        strRange = "A6:A19"
    Case "итоги_2"
        strRange = "A24:A37"
End Select
[/vba]

Но лично я бы предпочел добавить исключение Вашего условия и вернутся к неопределенному диапазону из 2 поста.
Нужно знать условие по которому скрываются эти ячейки.
Скрываются строки с ячейками больше 5?
If Worksheets(name_ch).Cells(i, 1) > 5 Then 'любое условие для скрытия/отображения из 1 столбца
 
Ответить
Сообщение
Увы, с учетом того, что диапазон на листах разный макрос работать отказывается, а вот если оставить только один лист - макрос работает замечательно.

Поэтому я и задал этот вопрос. Тут есть пара вариантов решения.
Если Вы знаете диапазоны для каждого листа, можно перебрать их через select case перед вложенным циклом, примерно так:
[vba]
Код
Select Case Sh
    Case "итоги"
        strRange = "A6:A19"
    Case "итоги_2"
        strRange = "A24:A37"
End Select
[/vba]

Но лично я бы предпочел добавить исключение Вашего условия и вернутся к неопределенному диапазону из 2 поста.
Нужно знать условие по которому скрываются эти ячейки.
Скрываются строки с ячейками больше 5?
If Worksheets(name_ch).Cells(i, 1) > 5 Then 'любое условие для скрытия/отображения из 1 столбца

Автор - Mikael
Дата добавления - 17.01.2018 в 13:55
graffserg Дата: Среда, 17.01.2018, 14:08 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 84
Репутация: 1 ±
Замечаний: 0% ±

2010
Отлично, работает по первой части из поста. Диапазон скрытия до 200 строк. Только как быть, если лист под паролем? Пробовал, но не получается. Помогите пожалуйста.
 
Ответить
СообщениеОтлично, работает по первой части из поста. Диапазон скрытия до 200 строк. Только как быть, если лист под паролем? Пробовал, но не получается. Помогите пожалуйста.

Автор - graffserg
Дата добавления - 17.01.2018 в 14:08
Mikael Дата: Среда, 17.01.2018, 14:14 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 80
Репутация: 31 ±
Замечаний: 0% ±

Excel 2010
И еще вопрос - как быть, если лист защищен паролем?

Защита листа это уже отдельный вопрос. Совсем недавно была тема
Можно добавить параметр UserInterfaceOnly:=True, тогда лист будет защищен, но макросы сработают. И не надо будет в каждой процедуре прописывать "снять защиту" "поставить защиту".
[vba]
Код
Worksheets(Sh).Protect Password:="123456", UserInterfaceOnly:=True
[/vba]
Однако этот параметр слетает при закрытии книги, поэтому код нужно вставить в модуль книги в обработчик события Workbook_Open.
[vba]
Код
Private Sub Workbook_Open()
    Dim Sh As Variant
    For Each Sh In Array("итоги", "итоги_2")
        Worksheets(Sh).Protect Password:="123456", UserInterfaceOnly:=True
    Next Sh
End Sub
[/vba]
 
Ответить
Сообщение
И еще вопрос - как быть, если лист защищен паролем?

Защита листа это уже отдельный вопрос. Совсем недавно была тема
Можно добавить параметр UserInterfaceOnly:=True, тогда лист будет защищен, но макросы сработают. И не надо будет в каждой процедуре прописывать "снять защиту" "поставить защиту".
[vba]
Код
Worksheets(Sh).Protect Password:="123456", UserInterfaceOnly:=True
[/vba]
Однако этот параметр слетает при закрытии книги, поэтому код нужно вставить в модуль книги в обработчик события Workbook_Open.
[vba]
Код
Private Sub Workbook_Open()
    Dim Sh As Variant
    For Each Sh In Array("итоги", "итоги_2")
        Worksheets(Sh).Protect Password:="123456", UserInterfaceOnly:=True
    Next Sh
End Sub
[/vba]

Автор - Mikael
Дата добавления - 17.01.2018 в 14:14
graffserg Дата: Среда, 17.01.2018, 15:00 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 84
Репутация: 1 ±
Замечаний: 0% ±

2010
Уважаемые Mikael, а возможно ли в самом макросе, предложенном Вами, вписать типа
[vba]
Код

ActiveSheet.Protect Password:="1111", UserInterfaceOnly:=True
[/vba]
Дело в том, что у меня в книге, порядка 20 листов, часть их запаролена, а часть нет. Пробовал как Вы написали выше, но сразу строка
[vba]
Код
Worksheets(Sh).Protect Password:="123456", UserInterfaceOnly:=True
[/vba]
выделяется красным. Может я не то делаю :'(
 
Ответить
СообщениеУважаемые Mikael, а возможно ли в самом макросе, предложенном Вами, вписать типа
[vba]
Код

ActiveSheet.Protect Password:="1111", UserInterfaceOnly:=True
[/vba]
Дело в том, что у меня в книге, порядка 20 листов, часть их запаролена, а часть нет. Пробовал как Вы написали выше, но сразу строка
[vba]
Код
Worksheets(Sh).Protect Password:="123456", UserInterfaceOnly:=True
[/vba]
выделяется красным. Может я не то делаю :'(

Автор - graffserg
Дата добавления - 17.01.2018 в 15:00
Mikael Дата: Среда, 17.01.2018, 15:18 | Сообщение № 12
Группа: Пользователи
Ранг: Участник
Сообщений: 80
Репутация: 31 ±
Замечаний: 0% ±

Excel 2010
graffserg, странно у меня все работает. Вероятно ошибку вызывает неправильное название одного из листов в Array, возможно ругается на то, что защита уже установлена. Файла нет, точно сказать не могу.
Попробуйте вот что:
1. перед защитой листа снять ее
[vba]
Код
Worksheets(Sh).Unprotect Password:="123456"
[/vba]
2. если не поможет, запустите этот код:
[vba]
Код
Sub TestShNames()
    On Error Resume Next
    Dim Sh As Variant
    For Each Sh In Array("итоги", "итоги_2")
        Worksheets(Sh).Unprotect Password:="123456"
        Worksheets(Sh).Protect Password:="123456", UserInterfaceOnly:=True
        If Err Then MsgBox Sh, vbCritical: Err.Clear
    Next Sh
    On Error GoTo 0
End Sub
[/vba]
Он должен выдать сообщение, если неправильное имя листа
 
Ответить
Сообщениеgraffserg, странно у меня все работает. Вероятно ошибку вызывает неправильное название одного из листов в Array, возможно ругается на то, что защита уже установлена. Файла нет, точно сказать не могу.
Попробуйте вот что:
1. перед защитой листа снять ее
[vba]
Код
Worksheets(Sh).Unprotect Password:="123456"
[/vba]
2. если не поможет, запустите этот код:
[vba]
Код
Sub TestShNames()
    On Error Resume Next
    Dim Sh As Variant
    For Each Sh In Array("итоги", "итоги_2")
        Worksheets(Sh).Unprotect Password:="123456"
        Worksheets(Sh).Protect Password:="123456", UserInterfaceOnly:=True
        If Err Then MsgBox Sh, vbCritical: Err.Clear
    Next Sh
    On Error GoTo 0
End Sub
[/vba]
Он должен выдать сообщение, если неправильное имя листа

Автор - Mikael
Дата добавления - 17.01.2018 в 15:18
RAN Дата: Среда, 17.01.2018, 15:27 | Сообщение № 13
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
graffserg, странно у меня все работает

Ничего странного
Правильно записанная строка работает, не правильно записанная - со стыда краснеет. :D


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
graffserg, странно у меня все работает

Ничего странного
Правильно записанная строка работает, не правильно записанная - со стыда краснеет. :D

Автор - RAN
Дата добавления - 17.01.2018 в 15:27
graffserg Дата: Среда, 17.01.2018, 15:36 | Сообщение № 14
Группа: Пользователи
Ранг: Участник
Сообщений: 84
Репутация: 1 ±
Замечаний: 0% ±

2010
Спасибо огромное. Всё работает как часы. Мной была допущена ошибка в коде.
 
Ответить
СообщениеСпасибо огромное. Всё работает как часы. Мной была допущена ошибка в коде.

Автор - graffserg
Дата добавления - 17.01.2018 в 15:36
Mikael Дата: Среда, 17.01.2018, 15:43 | Сообщение № 15
Группа: Пользователи
Ранг: Участник
Сообщений: 80
Репутация: 31 ±
Замечаний: 0% ±

Excel 2010
graffserg, отлично, рад помочь :)
RAN, вот что значит большой опыт, а я сразу понесся варианты строить :D
 
Ответить
Сообщениеgraffserg, отлично, рад помочь :)
RAN, вот что значит большой опыт, а я сразу понесся варианты строить :D

Автор - Mikael
Дата добавления - 17.01.2018 в 15:43
Manyasha Дата: Среда, 17.01.2018, 15:51 | Сообщение № 16
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 901 ±
Замечаний: 0% ±

Excel 2010, 2016
graffserg, для корректного оформления кода, в режиме правки поста выделите весь код и нажмите на кнопку #.


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеgraffserg, для корректного оформления кода, в режиме правки поста выделите весь код и нажмите на кнопку #.

Автор - Manyasha
Дата добавления - 17.01.2018 в 15:51
graffserg Дата: Среда, 17.01.2018, 17:31 | Сообщение № 17
Группа: Пользователи
Ранг: Участник
Сообщений: 84
Репутация: 1 ±
Замечаний: 0% ±

2010
Всем огромное спасибо!!! Вот, что значит мастера!! hands hands
 
Ответить
СообщениеВсем огромное спасибо!!! Вот, что значит мастера!! hands hands

Автор - graffserg
Дата добавления - 17.01.2018 в 17:31
  • Страница 1 из 1
  • 1
Поиск:

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