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

Вход

Регистрация

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

 

= Мир MS Excel/макрос для удаления всех символов до первого 0. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » макрос для удаления всех символов до первого 0. (Макросы/Sub)
макрос для удаления всех символов до первого 0.
Uki Дата: Пятница, 31.07.2015, 12:16 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Добрый день! Суть проблемы вот в чем:

При выгрузке я получаю файл в котором содержится столбец с инвентарными номерами типа " 00000000-00001545" или " 21545".
С разной комбинацией пробелов и нулей впереди. Очень нужен макрос, который будет удалять все символы до первого не равного "0" по всему столбцу.(строк порядка 2000, и будет больше).
Тип данный при выгрузке - текстовый.
Т.е. Было - Нужно
" 00000000-00001545" - "1545"
" 21545" - "21545"
К сообщению приложен файл: 0154.xls (16.5 Kb)


Сообщение отредактировал Uki - Пятница, 31.07.2015, 12:50
 
Ответить
СообщениеДобрый день! Суть проблемы вот в чем:

При выгрузке я получаю файл в котором содержится столбец с инвентарными номерами типа " 00000000-00001545" или " 21545".
С разной комбинацией пробелов и нулей впереди. Очень нужен макрос, который будет удалять все символы до первого не равного "0" по всему столбцу.(строк порядка 2000, и будет больше).
Тип данный при выгрузке - текстовый.
Т.е. Было - Нужно
" 00000000-00001545" - "1545"
" 21545" - "21545"

Автор - Uki
Дата добавления - 31.07.2015 в 12:16
miver Дата: Пятница, 31.07.2015, 12:55 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 190
Репутация: 37 ±
Замечаний: 0% ±

Excel 2010
[vba]
Код
Sub D()
     Dim cell As Range
     For Each cell In [A:A]
         If cell.Value = "" Then Exit Sub
         txt = CStr(cell.Value)
         For i = 1 To Len(txt)
             If Val(Mid(txt, i, 1)) > 0 Then
                 cell.Offset(, 1).Value = Mid(txt, i)
                 Exit For
             End If
         Next i
     Next cell
End Sub
[/vba]
К сообщению приложен файл: 2763684.xls (35.5 Kb)
 
Ответить
Сообщение[vba]
Код
Sub D()
     Dim cell As Range
     For Each cell In [A:A]
         If cell.Value = "" Then Exit Sub
         txt = CStr(cell.Value)
         For i = 1 To Len(txt)
             If Val(Mid(txt, i, 1)) > 0 Then
                 cell.Offset(, 1).Value = Mid(txt, i)
                 Exit For
             End If
         Next i
     Next cell
End Sub
[/vba]

Автор - miver
Дата добавления - 31.07.2015 в 12:55
Uki Дата: Пятница, 31.07.2015, 13:16 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
miver, спасибо огромное!

For Each cell In [A:A]

Я правильно понимаю, что для те же действий в столбце В здесь нужно просто указать "For Each cell In [B:B]" ?


Сообщение отредактировал Uki - Пятница, 31.07.2015, 13:17
 
Ответить
Сообщениеmiver, спасибо огромное!

For Each cell In [A:A]

Я правильно понимаю, что для те же действий в столбце В здесь нужно просто указать "For Each cell In [B:B]" ?

Автор - Uki
Дата добавления - 31.07.2015 в 13:16
Uki Дата: Пятница, 31.07.2015, 13:21 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

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

Автор - Uki
Дата добавления - 31.07.2015 в 13:21
RAN Дата: Пятница, 31.07.2015, 14:03 | Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Код
Sub Мяу()
Dim arr(), i&
' для скорости работаем с массивом
arr() = Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row).Value
' перебираем элементы массива
For i = 1 To UBound(arr)
' меняем все пробелы и тире на "пусто"
arr(i, 1) = Replace(arr(i, 1), " ", "")
arr(i, 1) = Replace(arr(i, 1), "-", "")
arr(i, 1) = Replace(arr(i, 1), Chr(160), "") ' на всякий случай, вдруг неразрывный пробел попадется
' извлекаем число
arr(i, 1) = Val(arr(i, 1))
'arr(i, 1) = "'" & Val(arr(i, 1)) ' если нужен текст
Next
' выгружаем на лист
Range("D1").Resize(UBound(arr)) = arr
End Sub
[/vba]


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

Сообщение отредактировал RAN - Пятница, 31.07.2015, 14:04
 
Ответить
Сообщение[vba]
Код
Sub Мяу()
Dim arr(), i&
' для скорости работаем с массивом
arr() = Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row).Value
' перебираем элементы массива
For i = 1 To UBound(arr)
' меняем все пробелы и тире на "пусто"
arr(i, 1) = Replace(arr(i, 1), " ", "")
arr(i, 1) = Replace(arr(i, 1), "-", "")
arr(i, 1) = Replace(arr(i, 1), Chr(160), "") ' на всякий случай, вдруг неразрывный пробел попадется
' извлекаем число
arr(i, 1) = Val(arr(i, 1))
'arr(i, 1) = "'" & Val(arr(i, 1)) ' если нужен текст
Next
' выгружаем на лист
Range("D1").Resize(UBound(arr)) = arr
End Sub
[/vba]

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

Excel 2007
RAN, Спасибо ! Все понятно! :)

Range("D1").Resize(UBound(arr)) = arr


Если я здесь укажу Range("А1").Resize(UBound(arr)) = arr , то это будет корректно? Не очень хочу заводить новые столбцы...
 
Ответить
СообщениеRAN, Спасибо ! Все понятно! :)

Range("D1").Resize(UBound(arr)) = arr


Если я здесь укажу Range("А1").Resize(UBound(arr)) = arr , то это будет корректно? Не очень хочу заводить новые столбцы...

Автор - Uki
Дата добавления - 31.07.2015 в 14:13
RAN Дата: Пятница, 31.07.2015, 14:17 | Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
А попробовать? ;)


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеА попробовать? ;)

Автор - RAN
Дата добавления - 31.07.2015 в 14:17
Uki Дата: Пятница, 31.07.2015, 14:21 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
RAN, я уже :)

Все работает! Даже номера типа "0000001-2151512" меняет как надо на "2151512" !

Шикарный вариант! Огромное спасибо!
 
Ответить
СообщениеRAN, я уже :)

Все работает! Даже номера типа "0000001-2151512" меняет как надо на "2151512" !

Шикарный вариант! Огромное спасибо!

Автор - Uki
Дата добавления - 31.07.2015 в 14:21
miver Дата: Пятница, 31.07.2015, 14:34 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 190
Репутация: 37 ±
Замечаний: 0% ±

Excel 2010
Так понятно?
[vba]
Код
Sub D()
     ' Определяем переменную для удобства
     Dim cell As Range
     ' Начинаем перебор по столбику А
     ' Если нужно перебрать какой-то диапазон ячеек, то можно написать Лист1.Range("A1","B10")
     ' будет перебор диапазона ячеек "A1:B10"
     For Each cell In [A:A]
         ' Если очередная ячейка пустая, то заканчиваем работу - дошли до конца заполненных ячеек
         If cell.Value = "" Then Exit Sub
         ' Переносим значение очередной ячейки в переменную txt
         ' Для надежности конвертируем содержимое в текст - CStr. Если будет число, то оно тоже попадет как текст
         txt = CStr(cell.Value)
         ' Начинаем перебор от 1 до длины строки в txt
         For i = 1 To Len(txt)
             ' Получаем очередную букву Mid(txt, i, 1) - см. описание в интернет
             ' Переводим букву в число с помощью функции Val. Все что не число переведется в 0
             If Val(Mid(txt, i, 1)) > 0 Then
                 ' Если буква оказалось числом (одно из 123456789)
                 ' Копируем значения в ячейку справа .Offset(, 1) оставшиеся значения до конца (с позиции = i) Mid(txt, i)
                 cell.Offset(, 1).Value = Mid(txt, i)
                 ' Выходим из цикла перебора
                 Exit For
             End If
             ' Идем на следующую букву строки в txt
         Next i
     ' Идем на следующую ячейку перебора по столбику А
     Next cell
End Sub
[/vba]
 
Ответить
СообщениеТак понятно?
[vba]
Код
Sub D()
     ' Определяем переменную для удобства
     Dim cell As Range
     ' Начинаем перебор по столбику А
     ' Если нужно перебрать какой-то диапазон ячеек, то можно написать Лист1.Range("A1","B10")
     ' будет перебор диапазона ячеек "A1:B10"
     For Each cell In [A:A]
         ' Если очередная ячейка пустая, то заканчиваем работу - дошли до конца заполненных ячеек
         If cell.Value = "" Then Exit Sub
         ' Переносим значение очередной ячейки в переменную txt
         ' Для надежности конвертируем содержимое в текст - CStr. Если будет число, то оно тоже попадет как текст
         txt = CStr(cell.Value)
         ' Начинаем перебор от 1 до длины строки в txt
         For i = 1 To Len(txt)
             ' Получаем очередную букву Mid(txt, i, 1) - см. описание в интернет
             ' Переводим букву в число с помощью функции Val. Все что не число переведется в 0
             If Val(Mid(txt, i, 1)) > 0 Then
                 ' Если буква оказалось числом (одно из 123456789)
                 ' Копируем значения в ячейку справа .Offset(, 1) оставшиеся значения до конца (с позиции = i) Mid(txt, i)
                 cell.Offset(, 1).Value = Mid(txt, i)
                 ' Выходим из цикла перебора
                 Exit For
             End If
             ' Идем на следующую букву строки в txt
         Next i
     ' Идем на следующую ячейку перебора по столбику А
     Next cell
End Sub
[/vba]

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

Excel 2007
miver, да, спасибо! :)
 
Ответить
Сообщениеmiver, да, спасибо! :)

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

Excel 2007
RAN, а как сделать так что бы он в пустые ячейки не вставлял 0 ? ну или удалял его потом...
 
Ответить
СообщениеRAN, а как сделать так что бы он в пустые ячейки не вставлял 0 ? ну или удалял его потом...

Автор - Uki
Дата добавления - 31.07.2015 в 14:58
miver Дата: Пятница, 31.07.2015, 15:05 | Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 190
Репутация: 37 ±
Замечаний: 0% ±

Excel 2010
номера типа "0000001-2151512" меняет как надо на "2151512"
Для уточнения. Вариант от RAN переводит в "12151512". Это правильно или Вам надо всё-таки "2151512" ?
 
Ответить
Сообщение
номера типа "0000001-2151512" меняет как надо на "2151512"
Для уточнения. Вариант от RAN переводит в "12151512". Это правильно или Вам надо всё-таки "2151512" ?

Автор - miver
Дата добавления - 31.07.2015 в 15:05
Uki Дата: Пятница, 31.07.2015, 15:16 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
miver, да, нужно без 1 ... "0000001-00255" должно перейти в "255". В таком количестве данных я и не заметила...

Прикрепляю файл(точнее его часть), который у меня выгружается... так вам, наверное, будет понятнее...
К сообщению приложен файл: 15555.xls (86.0 Kb)


Сообщение отредактировал Uki - Пятница, 31.07.2015, 15:18
 
Ответить
Сообщениеmiver, да, нужно без 1 ... "0000001-00255" должно перейти в "255". В таком количестве данных я и не заметила...

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

Автор - Uki
Дата добавления - 31.07.2015 в 15:16
doober Дата: Пятница, 31.07.2015, 15:29 | Сообщение № 14
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010
В связи с новыми требованиями код на доработке




Сообщение отредактировал doober - Пятница, 31.07.2015, 15:44
 
Ответить
СообщениеВ связи с новыми требованиями код на доработке

Автор - doober
Дата добавления - 31.07.2015 в 15:29
miver Дата: Пятница, 31.07.2015, 15:55 | Сообщение № 15
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 190
Репутация: 37 ±
Замечаний: 0% ±

Excel 2010
Uki, Тогда, если немного доработать код RAN, будет то что нужно ;)
[vba]
Код
    Dim arr(), i&
       ' для скорости работаем с массивом
       arr() = Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row).Value
       ' перебираем элементы массива
       For i = 1 To UBound(arr)
          ' Ищем позицию "-" справа
           p = InStrRev(arr(i, 1), "-")  
          ' Если нашли, то берем то что слева
           If p > 0 Then arr(i, 1) = Mid(arr(i, 1), p+1)
            ' меняем все пробелы и тире на "пусто"
           arr(i, 1) = Replace(arr(i, 1), " ", "")
           arr(i, 1) = Replace(arr(i, 1), Chr(160), "") ' на всякий случай, вдруг неразрывный пробел попадется
           ' извлекаем число
           arr(i, 1) = Val(arr(i, 1))
           ' Если значение =0 , присваиваем значение "ничто"
           If arr(i, 1) = 0 Then arr(i, 1) = Null
           'arr(i, 1) = "'" & Val(arr(i, 1)) ' если нужен текст
       Next
       ' выгружаем на лист
       Range("D1").Resize(UBound(arr)) = arr
[/vba]


Сообщение отредактировал miver - Пятница, 31.07.2015, 16:00
 
Ответить
СообщениеUki, Тогда, если немного доработать код RAN, будет то что нужно ;)
[vba]
Код
    Dim arr(), i&
       ' для скорости работаем с массивом
       arr() = Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row).Value
       ' перебираем элементы массива
       For i = 1 To UBound(arr)
          ' Ищем позицию "-" справа
           p = InStrRev(arr(i, 1), "-")  
          ' Если нашли, то берем то что слева
           If p > 0 Then arr(i, 1) = Mid(arr(i, 1), p+1)
            ' меняем все пробелы и тире на "пусто"
           arr(i, 1) = Replace(arr(i, 1), " ", "")
           arr(i, 1) = Replace(arr(i, 1), Chr(160), "") ' на всякий случай, вдруг неразрывный пробел попадется
           ' извлекаем число
           arr(i, 1) = Val(arr(i, 1))
           ' Если значение =0 , присваиваем значение "ничто"
           If arr(i, 1) = 0 Then arr(i, 1) = Null
           'arr(i, 1) = "'" & Val(arr(i, 1)) ' если нужен текст
       Next
       ' выгружаем на лист
       Range("D1").Resize(UBound(arr)) = arr
[/vba]

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

2010
[vba]
Код
Sub Мяв()
      Dim arr(), i&, s
      ' для скорости работаем с массивом
      arr() = Range("C1:C" & Cells(Rows.Count, "C").End(xlUp).Row).Value
      'On Error Resume Next
      ' перебираем элементы массива
      For i = 1 To UBound(arr)
          If Not IsEmpty(arr(i, 1)) Then ' пустые пропускаем
              If Asc(Left$(arr(i, 1), 1)) < 58 Then ' проверяем, в ячейке номер, или надпись
                  ' меняем все пробелы и тире на "пусто"
                  arr(i, 1) = Replace(arr(i, 1), " ", "")
                  arr(i, 1) = Replace(arr(i, 1), Chr(160), "")    ' на всякий случай, вдруг неразрывный пробел попадется
                  s = Split(arr(i, 1), "-") ' делим на части по "-"
                  ' извлекаем число
                  arr(i, 1) = Val(s(UBound(s))) ' берем последнюю часть
                  'arr(i, 1) = "'" & Val(arr(i, 1)) ' если нужен текст
              End If
          End If
      Next
      ' выгружаем на лист
      Range("I1").Resize(UBound(arr)) = arr
End Sub
[/vba]


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

Сообщение отредактировал RAN - Пятница, 31.07.2015, 16:31
 
Ответить
Сообщение[vba]
Код
Sub Мяв()
      Dim arr(), i&, s
      ' для скорости работаем с массивом
      arr() = Range("C1:C" & Cells(Rows.Count, "C").End(xlUp).Row).Value
      'On Error Resume Next
      ' перебираем элементы массива
      For i = 1 To UBound(arr)
          If Not IsEmpty(arr(i, 1)) Then ' пустые пропускаем
              If Asc(Left$(arr(i, 1), 1)) < 58 Then ' проверяем, в ячейке номер, или надпись
                  ' меняем все пробелы и тире на "пусто"
                  arr(i, 1) = Replace(arr(i, 1), " ", "")
                  arr(i, 1) = Replace(arr(i, 1), Chr(160), "")    ' на всякий случай, вдруг неразрывный пробел попадется
                  s = Split(arr(i, 1), "-") ' делим на части по "-"
                  ' извлекаем число
                  arr(i, 1) = Val(s(UBound(s))) ' берем последнюю часть
                  'arr(i, 1) = "'" & Val(arr(i, 1)) ' если нужен текст
              End If
          End If
      Next
      ' выгружаем на лист
      Range("I1").Resize(UBound(arr)) = arr
End Sub
[/vba]

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

Excel 2007
miver, спасибо! так вообще все прекрасно!

Только как вот сделать этот макрос доступным для всех xls?
 
Ответить
Сообщениеmiver, спасибо! так вообще все прекрасно!

Только как вот сделать этот макрос доступным для всех xls?

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

Excel 2007
RAN, создала - записала. Теперь все отлично!

Всем огромное спасибо еще раз!!!! :) :) :)

Избавили меня от нуднейшей работы!!
 
Ответить
СообщениеRAN, создала - записала. Теперь все отлично!

Всем огромное спасибо еще раз!!!! :) :) :)

Избавили меня от нуднейшей работы!!

Автор - Uki
Дата добавления - 31.07.2015 в 16:34
krosav4ig Дата: Пятница, 31.07.2015, 21:47 | Сообщение № 19
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
А может так можно?[vba]
Код
Sub F()
      With Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row)
          .NumberFormat = "general"
          .Replace " ", Empty, xlPart
          .Replace "*-", Empty, xlPart
          .Formula = .Value
      End With
End Sub
[/vba]
[p.s.]просто предположил, писал с телефона, проверить работу возможности нет. Если что, сильно не ругайте ^_^[/p.s.]

upd.
дополз до компа, проверил, исправил

upd.
для файла из 13 поста
[vba]
Код
Sub upd()
     Dim arr() As Variant
     With Range("C3:C" & Cells(Rows.Count, "C").End(xlUp).Row)
         arr = .Value
         With Intersect(.EntireRow, [I:I])
             .NumberFormat = "general"
             .Formula = arr
             .Replace " ", Empty, xlPart
             .Replace "*-", Empty, xlPart
         End With
     End With
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Суббота, 01.08.2015, 14:10
 
Ответить
СообщениеА может так можно?[vba]
Код
Sub F()
      With Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row)
          .NumberFormat = "general"
          .Replace " ", Empty, xlPart
          .Replace "*-", Empty, xlPart
          .Formula = .Value
      End With
End Sub
[/vba]
[p.s.]просто предположил, писал с телефона, проверить работу возможности нет. Если что, сильно не ругайте ^_^[/p.s.]

upd.
дополз до компа, проверил, исправил

upd.
для файла из 13 поста
[vba]
Код
Sub upd()
     Dim arr() As Variant
     With Range("C3:C" & Cells(Rows.Count, "C").End(xlUp).Row)
         arr = .Value
         With Intersect(.EntireRow, [I:I])
             .NumberFormat = "general"
             .Formula = arr
             .Replace " ", Empty, xlPart
             .Replace "*-", Empty, xlPart
         End With
     End With
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 31.07.2015 в 21:47
Uki Дата: Понедельник, 03.08.2015, 12:11 | Сообщение № 20
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
krosav4ig, тоже хорошо работает=) спасибо за вариант!
 
Ответить
Сообщениеkrosav4ig, тоже хорошо работает=) спасибо за вариант!

Автор - Uki
Дата добавления - 03.08.2015 в 12:11
Мир MS Excel » Вопросы и решения » Вопросы по VBA » макрос для удаления всех символов до первого 0. (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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