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

Вход

Регистрация

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

 

= Мир MS Excel/Как оставить в ListBox значения по мере ввода символов? - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как оставить в ListBox значения по мере ввода символов? (Макросы/Sub)
Как оставить в ListBox значения по мере ввода символов?
vigl Дата: Суббота, 10.02.2018, 01:53 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Здравствуйте!

Подскажите, пожалуйста, как образом можно из всего множества записей ListBox (пока порядка 9 тыс.) находящегося на форме, оставить только те, которые будут соответствовать введенным с клавиатуры буквам, причем в строгом соответствии с порядком введенных букв. То, что здесь удалось найти, проводит отбор данных, но не так, как я описал.
Спасибо.
 
Ответить
СообщениеЗдравствуйте!

Подскажите, пожалуйста, как образом можно из всего множества записей ListBox (пока порядка 9 тыс.) находящегося на форме, оставить только те, которые будут соответствовать введенным с клавиатуры буквам, причем в строгом соответствии с порядком введенных букв. То, что здесь удалось найти, проводит отбор данных, но не так, как я описал.
Спасибо.

Автор - vigl
Дата добавления - 10.02.2018 в 01:53
bmv98rus Дата: Суббота, 10.02.2018, 08:31 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1251
Репутация: 213 ±
Замечаний: 0% ±

Excel 2013/2016
vigl, как то не очень вы описали. Боюсь, что масса предложенных вариантов будет снова не подходить и хорошо, если кто угадает ваши сокровенные желания. Каково условие фильтра (Содержит, начинается, заканивается, ... все это с отрицанием ..., сочетание букв или раздельно ) Куда вы вводите ваши буквы?


Сообщение отредактировал bmv98rus - Суббота, 10.02.2018, 08:50
 
Ответить
Сообщениеvigl, как то не очень вы описали. Боюсь, что масса предложенных вариантов будет снова не подходить и хорошо, если кто угадает ваши сокровенные желания. Каково условие фильтра (Содержит, начинается, заканивается, ... все это с отрицанием ..., сочетание букв или раздельно ) Куда вы вводите ваши буквы?

Автор - bmv98rus
Дата добавления - 10.02.2018 в 08:31
fan-vba Дата: Суббота, 10.02.2018, 08:34 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 10 ±
Замечаний: 0% ±

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

Автор - fan-vba
Дата добавления - 10.02.2018 в 08:34
RAN Дата: Суббота, 10.02.2018, 10:47 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4752
Репутация: 955 ±
Замечаний: 0% ±

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

==
начинается

Или есть варианты? :)


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

==
начинается

Или есть варианты? :)

Автор - RAN
Дата добавления - 10.02.2018 в 10:47
vigl Дата: Суббота, 10.02.2018, 11:09 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
А я то думал, что написал вполне понятно, но, увы. Сейчас все-таки, попытаюсь:
Имеется форма, на форме имеется ListBox, который заполняется и отсортировывается в алфавитном порядке ФИО в количестве 8738 штук средствами VBA, TextBox для ввода искомых значений и много чего еще, не имеющее отношение к проблеме. Искать требуемую ФИО двигая имеющиеся записи, это нереально, поэтому логичнее и проще было бы организовать поиск путем отбора в списке значений в соответствии с вводимыми буквами в предназначенный для этого TextBox, при этом, если ввели букву "И", то в списке должны остаться только те фамилии, которые имеют букву "И" в начале, а не содержат ее в любом месте. Далее вводим к примеру букву "В" и в списке должны остаться значения у которых первые две буквы "ИВ" а не отбирать значение, у которых помимо введенной ранее букве "И" содержится буква "В" в любом месте слова. Далее вводим букву "А" и остаются только значения, у которых третьей буква "А" и в целом "ИВА" не наличии этой буквы в любом месте слова. и т.д., т.е. четкий и конкретный отбор в соответствии с введенным образцом.
 
Ответить
СообщениеА я то думал, что написал вполне понятно, но, увы. Сейчас все-таки, попытаюсь:
Имеется форма, на форме имеется ListBox, который заполняется и отсортировывается в алфавитном порядке ФИО в количестве 8738 штук средствами VBA, TextBox для ввода искомых значений и много чего еще, не имеющее отношение к проблеме. Искать требуемую ФИО двигая имеющиеся записи, это нереально, поэтому логичнее и проще было бы организовать поиск путем отбора в списке значений в соответствии с вводимыми буквами в предназначенный для этого TextBox, при этом, если ввели букву "И", то в списке должны остаться только те фамилии, которые имеют букву "И" в начале, а не содержат ее в любом месте. Далее вводим к примеру букву "В" и в списке должны остаться значения у которых первые две буквы "ИВ" а не отбирать значение, у которых помимо введенной ранее букве "И" содержится буква "В" в любом месте слова. Далее вводим букву "А" и остаются только значения, у которых третьей буква "А" и в целом "ИВА" не наличии этой буквы в любом месте слова. и т.д., т.е. четкий и конкретный отбор в соответствии с введенным образцом.

Автор - vigl
Дата добавления - 10.02.2018 в 11:09
RAN Дата: Суббота, 10.02.2018, 11:29 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4752
Репутация: 955 ±
Замечаний: 0% ±

2010
Подскажите, пожалуйста

Пожалуйста.
Уберите звездочку.


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Подскажите, пожалуйста

Пожалуйста.
Уберите звездочку.

Автор - RAN
Дата добавления - 10.02.2018 в 11:29
Апострофф Дата: Суббота, 10.02.2018, 11:38 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 154
Репутация: 56 ±
Замечаний: 0% ±

Excel 2003
У нас нет
Цитата
отсортированных ФИО в количестве 8738 штук
, обойдемся не сортированными числами.
В A() загоняйте свои ФИО
[vba]
Код
Option Explicit
Dim a(9999)

Private Sub TextBox1_Change()
Dim i&
ListBox1.Clear
For i = 0 To UBound(a)
  If a(i) Like TextBox1 & "*" Then
    ListBox1.AddItem a(i)
  End If
Next
End Sub

Private Sub UserForm_Initialize()
Randomize
Dim i&
For i = 0 To 9999
  a(i) = Int(Rnd * 10000)
Next
ListBox1.List = a
End Sub
[/vba]
 
Ответить
СообщениеУ нас нет
Цитата
отсортированных ФИО в количестве 8738 штук
, обойдемся не сортированными числами.
В A() загоняйте свои ФИО
[vba]
Код
Option Explicit
Dim a(9999)

Private Sub TextBox1_Change()
Dim i&
ListBox1.Clear
For i = 0 To UBound(a)
  If a(i) Like TextBox1 & "*" Then
    ListBox1.AddItem a(i)
  End If
Next
End Sub

Private Sub UserForm_Initialize()
Randomize
Dim i&
For i = 0 To 9999
  a(i) = Int(Rnd * 10000)
Next
ListBox1.List = a
End Sub
[/vba]

Автор - Апострофф
Дата добавления - 10.02.2018 в 11:38
nilem Дата: Суббота, 10.02.2018, 11:56 | Сообщение № 8
Группа: Авторы
Ранг: Старожил
Сообщений: 1451
Репутация: 512 ±
Замечаний: 0% ±

Excel 2013
vigl, привет
Здесь смотрели? Там есть поиск и по первым буквам, и по любому вхождению.


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениеvigl, привет
Здесь смотрели? Там есть поиск и по первым буквам, и по любому вхождению.

Автор - nilem
Дата добавления - 10.02.2018 в 11:56
bmv98rus Дата: Суббота, 10.02.2018, 14:05 | Сообщение № 9
Группа: Проверенные
Ранг: Старожил
Сообщений: 1251
Репутация: 213 ±
Замечаний: 0% ±

Excel 2013/2016
Или есть варианты?
варианты есть всегда :-)
 
Ответить
Сообщение
Или есть варианты?
варианты есть всегда :-)

Автор - bmv98rus
Дата добавления - 10.02.2018 в 14:05
vigl Дата: Суббота, 10.02.2018, 17:51 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Здесь смотрели? Там есть поиск и по первым буквам, и по любому вхождению.

да, смотрел, немножко кривовато.
 
Ответить
Сообщение
Здесь смотрели? Там есть поиск и по первым буквам, и по любому вхождению.

да, смотрел, немножко кривовато.

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

Excel 2016
Цитата Апострофф, 10.02.2018 в 11:38, в сообщении № 7 ()
обойдемся не сортированными числами.
В A() загоняйте свои ФИО

спасибо! код не рабочий...


Сообщение отредактировал vigl - Суббота, 10.02.2018, 18:11
 
Ответить
Сообщение
Цитата Апострофф, 10.02.2018 в 11:38, в сообщении № 7 ()
обойдемся не сортированными числами.
В A() загоняйте свои ФИО

спасибо! код не рабочий...

Автор - vigl
Дата добавления - 10.02.2018 в 17:52
RAN Дата: Суббота, 10.02.2018, 18:16 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4752
Репутация: 955 ±
Замечаний: 0% ±

2010
Вы просили подсказку - я вам ее дал. 90% вероятности, что правильно.
Вы умышлено не читаете правил, и превращаете тему с вопросом, не стоящим выеденного яйца, в место для стёба?


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеВы просили подсказку - я вам ее дал. 90% вероятности, что правильно.
Вы умышлено не читаете правил, и превращаете тему с вопросом, не стоящим выеденного яйца, в место для стёба?

Автор - RAN
Дата добавления - 10.02.2018 в 18:16
Pelena Дата: Суббота, 10.02.2018, 19:04 | Сообщение № 13
Группа: Модераторы
Ранг: Местный житель
Сообщений: 12692
Репутация: 2794 ±
Замечаний: 0% ±

Excel 2010, 2016 & Mac Excel
немножко кривовато
обоснуйте


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
Сообщение
немножко кривовато
обоснуйте

Автор - Pelena
Дата добавления - 10.02.2018 в 19:04
RAN Дата: Суббота, 10.02.2018, 19:22 | Сообщение № 14
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4752
Репутация: 955 ±
Замечаний: 0% ±

2010
Дорогая редакция, скажите, кто у меня за стенкой скребется, и пищит?
Но это точно не мыши, потому, что, когда я гляжу в окно, мышей не видно, и, когда гляжу под диван - тоже!
yes


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеДорогая редакция, скажите, кто у меня за стенкой скребется, и пищит?
Но это точно не мыши, потому, что, когда я гляжу в окно, мышей не видно, и, когда гляжу под диван - тоже!
yes

Автор - RAN
Дата добавления - 10.02.2018 в 19:22
vigl Дата: Суббота, 10.02.2018, 19:23 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Вы просили подсказку - я вам ее дал. 90% вероятности, что правильно.
Вы умышлено не читаете правил, и превращаете тему с вопросом, не стоящим выеденного яйца, в место для стёба?

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


Сообщение отредактировал vigl - Суббота, 10.02.2018, 19:50
 
Ответить
Сообщение
Вы просили подсказку - я вам ее дал. 90% вероятности, что правильно.
Вы умышлено не читаете правил, и превращаете тему с вопросом, не стоящим выеденного яйца, в место для стёба?

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

Автор - vigl
Дата добавления - 10.02.2018 в 19:23
RAN Дата: Суббота, 10.02.2018, 19:47 | Сообщение № 16
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4752
Репутация: 955 ±
Замечаний: 0% ±

2010
пытаетесь меня обвинить

Да зачем мне оно нать?
Нет, вы что, серьезно не понимаете сути вашего вопроса?
"У меня есть то, что работает, но не так, как мне надо. Как сделать, чтобы оно работало так, как мне надо?"
И вы что, действительно надеетесь получить ответ на такой вопрос?


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Суббота, 10.02.2018, 19:49
 
Ответить
Сообщение
пытаетесь меня обвинить

Да зачем мне оно нать?
Нет, вы что, серьезно не понимаете сути вашего вопроса?
"У меня есть то, что работает, но не так, как мне надо. Как сделать, чтобы оно работало так, как мне надо?"
И вы что, действительно надеетесь получить ответ на такой вопрос?

Автор - RAN
Дата добавления - 10.02.2018 в 19:47
bmv98rus Дата: Суббота, 10.02.2018, 20:11 | Сообщение № 17
Группа: Проверенные
Ранг: Старожил
Сообщений: 1251
Репутация: 213 ±
Замечаний: 0% ±

Excel 2013/2016
[offtop] RAN, разве это стеб :-) напомню тему Вот это было незабываемо. :-)
Тут ТС сперва не описал что хотел понятным языком для всех, потом исправился и словами что работает криво всего то и показал, что тот код не выполняет задуманное им.
[/offtop]

По теме, мое редкое соприкосновение с SQL отучило пользовать Like, интересно на сколько в VBA быстрее/медленнее конструкция вида

[vba]
Код
ListBox1.Clear
FltrLen = Len(TextBox1)
StrFltr = LCase(TextBox1)
For i = 0 To UBound(a)
If LCase(Left(a(i), FltrLen)) = StrFltr Then
[/vba]
 
Ответить
Сообщение[offtop] RAN, разве это стеб :-) напомню тему Вот это было незабываемо. :-)
Тут ТС сперва не описал что хотел понятным языком для всех, потом исправился и словами что работает криво всего то и показал, что тот код не выполняет задуманное им.
[/offtop]

По теме, мое редкое соприкосновение с SQL отучило пользовать Like, интересно на сколько в VBA быстрее/медленнее конструкция вида

[vba]
Код
ListBox1.Clear
FltrLen = Len(TextBox1)
StrFltr = LCase(TextBox1)
For i = 0 To UBound(a)
If LCase(Left(a(i), FltrLen)) = StrFltr Then
[/vba]

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

Excel 2016
RAN, хорошо.
1.вот код заполнения значения ListBox при активации формы:
[vba]
Код

Private Sub UserForm_Activate()

    Sheets("База").Select
       Dim myRange As Range, myCell As Range, myCollection As New Collection, _
           myElement As Variant, i As Long

     Set myRange = Range("M2:M9000")

    On Error Resume Next
    For Each myCell In myRange
        myCollection.Add CStr(myCell.Value), CStr(myCell.Value)
    Next myCell
    On Error GoTo 0

    For Each myElement In myCollection
        frmFind.lstKod.AddItem myElement
    Next myElement

    With lstKod: iCountList = .ListCount - 1

        For iCount = iCountList To 1 Step -1
         For iCountTemp = iCountList To 1 Step -1
          If StrComp(.List(iCountTemp), .List(iCountTemp - 1), vbTextCompare) = -1 Then
             .AddItem .List(iCountTemp), iCountTemp - 1
             .RemoveItem iCountTemp + 1
          End If
         Next
        Next
    End With
End Sub
[/vba]

2. вот код выбора взятый отсюда: http://www.excelworld.ru/board/vba/tricks/find_in_database/9-1-0-27
[vba]
Код
Private Sub txtKod_Change()

    With lstKod: iCountList = .ListCount - 1

      For iCount = iCountList To 1 Step -1
       For iCountTemp = iCountList To 1 Step -1
           If StrComp(.List(iCountTemp), .List(iCountTemp - 1), vbTextCompare) = -1 Then
            .AddItem .List(iCountTemp), iCountTemp - 1
            .RemoveItem iCountTemp + 1
           End If
       Next
      Next
End With

Dim x, i As Long, txt As String, lt As Long, s As String
    If Len(txtKod.Text) = 0 Or bu = True Then Exit Sub
       txt = txtKod.Text: lt = Len(txtKod.Text)
       x = Sheets("База").Columns(13).SpecialCells(2).Value

        For i = 1 To UBound(x, 1)
          If txt = Mid(x(i, 1), 1, lt) Then s = s & x(i, 1) & "~"
        Next i

lstKod.List = Split(Mid(s, 2), "~")
End Sub
[/vba]

3. вот загруженная форма после отбора повторяющихся данных (обратите внимание на значения, начинающиеся с цифры 5):

4. вот результат отбора, где одно значение повторяется несколько раз, одно значение непонятно откуда взялось, а других значений вообще нет:

вот в принципе и все...
что Вы скажете? как это побороть?
[p.s.] создав тему, я думал, что кто-то из участников обсуждения где-то видел готовое решение.
К сообщению приложен файл: 6489019.jpg(24.8 Kb) · 8491979.jpg(11.5 Kb)


Сообщение отредактировал vigl - Суббота, 10.02.2018, 20:57
 
Ответить
СообщениеRAN, хорошо.
1.вот код заполнения значения ListBox при активации формы:
[vba]
Код

Private Sub UserForm_Activate()

    Sheets("База").Select
       Dim myRange As Range, myCell As Range, myCollection As New Collection, _
           myElement As Variant, i As Long

     Set myRange = Range("M2:M9000")

    On Error Resume Next
    For Each myCell In myRange
        myCollection.Add CStr(myCell.Value), CStr(myCell.Value)
    Next myCell
    On Error GoTo 0

    For Each myElement In myCollection
        frmFind.lstKod.AddItem myElement
    Next myElement

    With lstKod: iCountList = .ListCount - 1

        For iCount = iCountList To 1 Step -1
         For iCountTemp = iCountList To 1 Step -1
          If StrComp(.List(iCountTemp), .List(iCountTemp - 1), vbTextCompare) = -1 Then
             .AddItem .List(iCountTemp), iCountTemp - 1
             .RemoveItem iCountTemp + 1
          End If
         Next
        Next
    End With
End Sub
[/vba]

2. вот код выбора взятый отсюда: http://www.excelworld.ru/board/vba/tricks/find_in_database/9-1-0-27
[vba]
Код
Private Sub txtKod_Change()

    With lstKod: iCountList = .ListCount - 1

      For iCount = iCountList To 1 Step -1
       For iCountTemp = iCountList To 1 Step -1
           If StrComp(.List(iCountTemp), .List(iCountTemp - 1), vbTextCompare) = -1 Then
            .AddItem .List(iCountTemp), iCountTemp - 1
            .RemoveItem iCountTemp + 1
           End If
       Next
      Next
End With

Dim x, i As Long, txt As String, lt As Long, s As String
    If Len(txtKod.Text) = 0 Or bu = True Then Exit Sub
       txt = txtKod.Text: lt = Len(txtKod.Text)
       x = Sheets("База").Columns(13).SpecialCells(2).Value

        For i = 1 To UBound(x, 1)
          If txt = Mid(x(i, 1), 1, lt) Then s = s & x(i, 1) & "~"
        Next i

lstKod.List = Split(Mid(s, 2), "~")
End Sub
[/vba]

3. вот загруженная форма после отбора повторяющихся данных (обратите внимание на значения, начинающиеся с цифры 5):

4. вот результат отбора, где одно значение повторяется несколько раз, одно значение непонятно откуда взялось, а других значений вообще нет:

вот в принципе и все...
что Вы скажете? как это побороть?
[p.s.] создав тему, я думал, что кто-то из участников обсуждения где-то видел готовое решение.

Автор - vigl
Дата добавления - 10.02.2018 в 20:37
bmv98rus Дата: Суббота, 10.02.2018, 21:01 | Сообщение № 19
Группа: Проверенные
Ранг: Старожил
Сообщений: 1251
Репутация: 213 ±
Замечаний: 0% ±

Excel 2013/2016
vigl, пример то можно , а то рисовать самим нет желания, а отлаживать без данных не очень получается. да и конечно второй код просто фильтрует данные без контроля на уникальность и сортировки и берет их прямо с листа.


Сообщение отредактировал bmv98rus - Суббота, 10.02.2018, 21:02
 
Ответить
Сообщениеvigl, пример то можно , а то рисовать самим нет желания, а отлаживать без данных не очень получается. да и конечно второй код просто фильтрует данные без контроля на уникальность и сортировки и берет их прямо с листа.

Автор - bmv98rus
Дата добавления - 10.02.2018 в 21:01
vigl Дата: Суббота, 10.02.2018, 21:06 | Сообщение № 20
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

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

к сожалению данные выложить не могу... :(


Сообщение отредактировал vigl - Суббота, 10.02.2018, 21:06
 
Ответить
Сообщение
пример то можно , а то рисовать самим нет желания, а отлаживать без данных не очень получается.

к сожалению данные выложить не могу... :(

Автор - vigl
Дата добавления - 10.02.2018 в 21:06
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как оставить в ListBox значения по мере ввода символов? (Макросы/Sub)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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