Ответить
  • LWolf Senior Member
    офлайн
    LWolf Senior Member

    3037

    21 год на сайте
    пользователь #7387

    Профиль
    Написать сообщение

    3037
    # 29 января 2009 09:57

    KSIva, не нашел.

    И кстати вопрос. Как в Excel отсортировать список IP-адресов?

    т.е. он сортирует примерно так -

    xxx.xxx.x35.1

    xxx.xxx.x35.10

    xxx.xxx.x35.100

    ......

    xxx.xxx.x35.109

    xxx.xxx.x35.11

    xxx.xxx.x35.110

    xxx.xxx.x35.111

    и т.д

    Т.е. как текствое поле. А хотелось что б они подряд шли :)

    Сумма разума на планете — величина постоянная; население постоянно растёт. — Аксиома Коула
  • Yuri_K Senior Member
    офлайн
    Yuri_K Senior Member

    6125

    22 года на сайте
    пользователь #4604

    Профиль
    Написать сообщение

    6125
    # 29 января 2009 10:23 Редактировалось Yuri_K, 1 раз.

    Разделить каждый айпишник на 4-е ячейки (Data \ Text to Colums). Отсортировать в нужном порядке... При желании слепить назад. Если сортировка нужна на регулярной основе, то резать IP на составляющие лучше формулой MID.

  • KSIva Senior Member
    офлайн
    KSIva Senior Member

    12173

    20 лет на сайте
    пользователь #15360

    Профиль
    Написать сообщение

    12173
    # 29 января 2009 11:07
    Yuri K.:

    Разделить кажрый айпишник на 4-е яцейки (Data \ Text to Colums). Отсортировать в нужном порядке... При желании слепить назад. Если сортировка нужна на регулярной основе, то резать IP на составляющие лучше формулой MID.

    Yuri K., так вырезание четвертой части с помощью функции ПСТР, представляет собой очень огромную формулу, так как приходится учитывать что в первых трех частях может быть от 1 до 3 цифр. Или ты знаешь красивое решение?

    Вечно молодой, вечно пьяный...
  • LWolf Senior Member
    офлайн
    LWolf Senior Member

    3037

    21 год на сайте
    пользователь #7387

    Профиль
    Написать сообщение

    3037
    # 29 января 2009 11:10
    Yuri K.:

    Разделить кажрый айпишник на 4-е яцейки (Data \ Text to Colums). Отсортировать в нужном порядке...

    Спасибо. В принципе, такой вариант подходит..... пока подходит :)

    Сумма разума на планете — величина постоянная; население постоянно растёт. — Аксиома Коула
  • Yuri_K Senior Member
    офлайн
    Yuri_K Senior Member

    6125

    22 года на сайте
    пользователь #4604

    Профиль
    Написать сообщение

    6125
    # 29 января 2009 17:11
    KSIva:


    Yuri K., так вырезание четвертой части с помощью функции ПСТР, представляет собой очень огромную формулу, так как приходится учитывать что в первых трех частях может быть от 1 до 3 цифр. Или ты знаешь красивое решение?

    Обожаю нетривиальные решения.

    Но в данном случае что мешает использовать функцию RIGHT ?

    Для ячейки A1 универсальня формула по "откусыванию" последней части IP (1,2 или 3 знака в конце и неважно что там впереди) может выглядеть так:

    =IF(ISERROR(FIND(".";RIGHT(A1;3)));RIGHT(A1;3);IF(ISERROR(FIND(".";RIGHT(A1;2)));RIGHT(A1;2);RIGHT(A1;1)))

    На изящество и красоту не претендую, давайте спортивного интереса ради поищем более красивую реализацию.

    PS

    А вообще, если не сводить задачу к откусыванию именно последней части IP, а просто разложить айпишник по столбцам, то все сводиться к 2-м промежуточным ячейкам и 2-м простым формулам

    откусываем первую часть до точки

    =MID(A1;1;FIND(".";A1;1)-1)

    в промежуточной ячейке достраиваем айпишник без первого куска, чтобы от него потом отпять откусить 1-й формулой:

    =MID(A1;FIND(".";A1;1)+1;LEN(A1))

    Получается 2-а столбца с промежуточными результатами, зато относительно просто и наглядно.

    Астапа понесло... :)

  • KSIva Senior Member
    офлайн
    KSIva Senior Member

    12173

    20 лет на сайте
    пользователь #15360

    Профиль
    Написать сообщение

    12173
    # 30 января 2009 09:20
    Yuri K.:

    KSIva (цитата):

    Yuri K., так вырезание четвертой части с помощью функции ПСТР, представляет собой очень огромную формулу, так как приходится учитывать что в первых трех частях может быть от 1 до 3 цифр. Или ты знаешь красивое решение?

    Обожаю нетривиальные решения.

    Но в данном случае что мешает использовать функцию RIGHT ?

    Для ячейки A1 универсальня формула по "откусыванию" последней части IP (1,2 или 3 знака в конце и неважно что там впереди) может выглядеть так:

    =IF(ISERROR(FIND(".";RIGHT(A1;3:);RIGHT(A1;3);IF(ISERROR(FIND(".";RIGHT(A1;2:);RIGHT(A1;2);RIGHT(A1;1:)

    На изящество и красоту не претендую, давайте спортивного интереса ради поищем более красивую реализацию.

    Продолжим научную дисскусию.

    Вопрос по твое формуле: Зачем в формуле двоеточие?

    Кроме того полученный текст надо перевести в число.

    А сократит можно на 2 символа, если убрать последние ";1" :)

    Кстати, перевел ее на русский.

    =ЕСЛИ(ЕОШ(ПОИСК(".";ПРАВСИМВ(A1;3)));ПРАВСИМВ(A1;3);ЕСЛИ(ЕОШ(ПОИСК(".";ПРАВСИМВ(A1;2)));ПРАВСИМВ(A1;2);ПРАВСИМВ(A1)))

    Получилось длинее :)

    А ради спортивного интереса, толко что открыл для себя новую функцию ПОДСТАВИТЬ() и спомощью ее предлагаю вариант решения

    =ПСТР(A1;ПОИСК("!";ПОДСТАВИТЬ(A1;".";"!";3))+1;3)

    P.S. для тех кто не знает соответствие в написании функций в английском и русском Excel'е советую открыть файл FUNCS.XLS в папке с установленным офисом.

    Вечно молодой, вечно пьяный...
  • LWolf Senior Member
    офлайн
    LWolf Senior Member

    3037

    21 год на сайте
    пользователь #7387

    Профиль
    Написать сообщение

    3037
    # 30 января 2009 10:02

    Yuri K., KSIva, т.е. получается, что ваши решения верны только для случая когда первые три части IP одинаковые?

    а когда все 4 часи могут быть разные, то способ

    Разделить кажрый айпишник на 4-е яцейки (Data \ Text to Colums). Отсортировать в нужном порядке...

    имхо проще.

    Сумма разума на планете — величина постоянная; население постоянно растёт. — Аксиома Коула
  • KSIva Senior Member
    офлайн
    KSIva Senior Member

    12173

    20 лет на сайте
    пользователь #15360

    Профиль
    Написать сообщение

    12173
    # 30 января 2009 10:31

    LWolf, если первые три части одинаковы, то решение очень просто

    =ПСТР(А1;13;3)

    Мы тут упражняемся с общим случаем, чисто для повышения собственного мастерства. :)

    Вечно молодой, вечно пьяный...
  • Zwalker Senior Member
    офлайн
    Zwalker Senior Member

    1915

    22 года на сайте
    пользователь #3119

    Профиль
    Написать сообщение

    1915
    # 30 января 2009 10:35

    LWolf,

    т.е. получается, что ваши решения верны только для случая когда первые три части IP одинаковые?

    Почему? их решения не зависят от количества знаков в IP адресе. Они выделяют последний октет IP адреса, по которому в дальнейшем будет проводиться сортировка. IMHO проще.

    KSIva, У нас мысли в одну сторону работают. Тоже подумал про ПОДСТАВИТЬ... а потом увидел что ты уже соорудил формулу.

    Она IMHO оптимальна - похоже короче не сделаешь.

    Friends come and go, but enemies accumulate.
  • Yuri_K Senior Member
    офлайн
    Yuri_K Senior Member

    6125

    22 года на сайте
    пользователь #4604

    Профиль
    Написать сообщение

    6125
    # 30 января 2009 10:41 Редактировалось Yuri_K, 1 раз.

    Yuri K., KSIva, т.е. получается, что ваши решения верны только для случая когда первые три части IP одинаковые?

    Нет. Все предложенные решение универсальные.

    LWolf, мы тут балуемся во круг 2-х решений.

    1-е откусывает последнюю часть IP независимо от того сколько цифр в какой части IP

    2-e делает тоже что "Text to Colums" только формулами

    Какое решение выбрать - зависит от Ваших задач. Если надо постоянно обновлять список IP адресов то лучше реализовать формулами. Если операция разовая или не часто повторяющаяся - то вполне сойдет и "Text to Colums".

    KSIva:


    Вопрос по твое формуле: Зачем в формуле двоеточие?

    Нииичего не понял. Вроде двоеточий небыло

    В любом случае - существует очень мало задачек которые нельзя решить на формулах.

    Предлагаю для разминки мозгов обмениваться такими задачками.

    Будем считать что разрезание и сортировку IP адресов мы решили.

    Была еще интересная задачка - автофильтр на формулах (вчера кстате впервые использовал на практике для реального таска)

    Еще интересные задачки?

  • KSIva Senior Member
    офлайн
    KSIva Senior Member

    12173

    20 лет на сайте
    пользователь #15360

    Профиль
    Написать сообщение

    12173
    # 30 января 2009 10:48

    Нииичего не понял. Вроде двоеточий небыло, и в чем тайный смысл замены "!" на "."

    Так функция ПСТР ищет первое вхождение, а нам нужно третье вхождение точки. Вот я ее и меняю через подставить. Раньше не использовал эту функцию, вот и приходилось извращаться через ПОИСК и ПСТР. В итоге получалась очень длинная формула. Теперь .ele знать более простой вариант.

    Была еще интересная задачка - автофильтр на формулах (вчера кстате впервые использовал на практике для реального таска)

    Это сложная задача. Может быть для начала расскажешь, какие решал более простые задачи с применением формулы. и мы подтянемся. Не стоит лесь сразу на самое трудное.

    Вечно молодой, вечно пьяный...
  • LWolf Senior Member
    офлайн
    LWolf Senior Member

    3037

    21 год на сайте
    пользователь #7387

    Профиль
    Написать сообщение

    3037
    # 30 января 2009 10:51
    KSIva:


    Мы тут упражняемся с общим случаем, чисто для повышения собственного мастерства.

    бррр.... запутали....эта формула

    =ЕСЛИ(ЕОШ(ПОИСК(".";ПРАВСИМВ(A1;3)));ПРАВСИМВ(A1;3);ЕСЛИ(ЕОШ(ПОИСК(".";ПРАВСИМВ(A1;2)));ПРАВСИМВ(A1;2);ПРАВСИМВ(A1)))

    вырезает последний сокет адреса? И потом можно сортировать...

    PS... пока написал, уже все разжевали...

    Сумма разума на планете — величина постоянная; население постоянно растёт. — Аксиома Коула
  • Неизвестный кот Senior Member
    офлайн
    Неизвестный кот Senior Member

    6278

    17 лет на сайте
    пользователь #93485

    Профиль

    6278
    # 30 января 2009 10:54
    LWolf:

    Как в Excel отсортировать список IP-адресов?

    т.е. он сортирует примерно так -

    xxx.xxx.x35.1

    xxx.xxx.x35.10

    xxx.xxx.x35.100

    xxx.xxx.x35.109

    xxx.xxx.x35.11

    xxx.xxx.x35.110

    xxx.xxx.x35.111

    и т.д

    Т.е. как текствое поле. А хотелось что б они подряд шли :)

    1 - Открываем Вордом.

    2 - Заменяем точки на табуляторы (^t).

    3 - Выбираем все, копипастим в Эксель и сортируем.

    4 - Делаем, что хотим.

    Ваш пример дает

    xxx xxx x35 1

    xxx xxx x35 10

    xxx xxx x35 11

    xxx xxx x35 100

    xxx xxx x35 109

    xxx xxx x35 110

    xxx xxx x35 111

    (Если я вас правильно понял)

  • LWolf Senior Member
    офлайн
    LWolf Senior Member

    3037

    21 год на сайте
    пользователь #7387

    Профиль
    Написать сообщение

    3037
    # 30 января 2009 11:01

    AntiContra, нууууу... в принципе решение имеет право на существование.. :)

    Сумма разума на планете — величина постоянная; население постоянно растёт. — Аксиома Коула
  • Неизвестный кот Senior Member
    офлайн
    Неизвестный кот Senior Member

    6278

    17 лет на сайте
    пользователь #93485

    Профиль

    6278
    # 30 января 2009 11:07

    LWolf, бугага. Я такие задачи решаю ежедневно, не изящно, но очень легко и быстро.

    Мне семью кормить надо, а не демонстрировать знания Экселя (которые есть).

    Предложенное решение требует 15 секунд вручную, 3 минуты нужно для записи в VBA.

    Кто меньше? :)

  • Yuri_K Senior Member
    офлайн
    Yuri_K Senior Member

    6125

    22 года на сайте
    пользователь #4604

    Профиль
    Написать сообщение

    6125
    # 30 января 2009 11:10 Редактировалось Yuri_K, 1 раз.

    Так функция ПСТР ищет первое вхождение, а нам нужно третье вхождение точки. Вот я ее и меняю через подставить. Раньше не использовал эту функцию, вот и приходилось извращаться через ПОИСК и ПСТР. В итоге получалась очень длинная формула. Теперь .ele знать более простой вариант.

    Все, разобрался. Неправильно перевел на англ. ф-ю ПОДСТАВИТЬ, а таблицы соответствий в исходно английском офисе нету.

    LWolf:


    вырезает последний сокет адреса? И потом можно сортировать...

    Используй формулу от KSIva (=ПСТР(A1;ПОИСК("!";ПОДСТАВИТЬ(A1;".";"!";3))+1;3)) она красивей.

    Если тебе нужна сортировка только по последней части то да - этого хватит.

    KSIva,

    Это сложная задача. Может быть для начала расскажешь, какие решал более простые задачи с применением формулы. и мы подтянемся. Не стоит лесь сразу на самое трудное.

    Все сложное состоит из простых составляющих.

    В свое время, я "прозрел" когда на лабораторной в институте, надо было на формулах сделать выборку из большой таблицы по заданному полю

    Пример

    Исходная таблица с полями

    Имя / Фамилия / Отчество / № группы / Средний бал

    Вторя таблица в которой только Фамилии

    Задача во второ йтаблице формулами на против каждой фамилии проставить соответствующий средний бал из 1-й таблицы

    Для интереса, сформируйте еще поля с Инициалами...

    Решите эту задачу, сможете построить автофильтр на формулах.

  • LWolf Senior Member
    офлайн
    LWolf Senior Member

    3037

    21 год на сайте
    пользователь #7387

    Профиль
    Написать сообщение

    3037
    # 30 января 2009 11:13

    хорошо... пусть вместо

    xxx.xxx.x35.1

    xxx.xxx.x35.10

    xxx.xxx.x35.100

    xxx.xxx.x35.109

    xxx.xxx.x35.11

    xxx.xxx.x35.110

    xxx.xxx.x35.111

    будет -

    172.10.135.1

    10.0.0.10

    192.168.1.100

    10.124.10.109

    ну и т.д. То есть в каждом сокете произвольные данные. Ваши формулы ж работать не будут?

    Сумма разума на планете — величина постоянная; население постоянно растёт. — Аксиома Коула
  • Yuri_K Senior Member
    офлайн
    Yuri_K Senior Member

    6125

    22 года на сайте
    пользователь #4604

    Профиль
    Написать сообщение

    6125
    # 30 января 2009 11:15

    LWolf, похоже настало время разобраться в предложенных способах и выбрать что Вам подходит больше.

  • LWolf Senior Member
    офлайн
    LWolf Senior Member

    3037

    21 год на сайте
    пользователь #7387

    Профиль
    Написать сообщение

    3037
    # 30 января 2009 11:15

    PS

    формула

    Разделить кажрый айпишник на 4-е яцейки (Data \ Text to Colums). Отсортировать в нужном порядке...

    подходит для меня на 99%

    Всё остальное.... это я так... вредничаю....

    Сумма разума на планете — величина постоянная; население постоянно растёт. — Аксиома Коула
  • Yuri_K Senior Member
    офлайн
    Yuri_K Senior Member

    6125

    22 года на сайте
    пользователь #4604

    Профиль
    Написать сообщение

    6125
    # 30 января 2009 12:18

    Вот кстате - кладезь мудрости

    http://www.planetaexcel.ru/