2017-02-13 11 views
-2

Я пытаюсь найти формулу для столбца A, которая будет проверять IP-адрес в колонке B и найти, если он попадает в диапазон (или между) 2 адреса в двух других столбцах C и D ,Excel Поиск IP-адреса в нескольких диапазонах

E.G.

 A   B    C    D 
+---------+-------------+-------------+------------+ 
| valid? | address  | start  | end  | 
+---------+-------------+-------------+------------+ 
| yes  | 10.1.1.5 | 10.1.1.0 | 10.1.1.31 | 
| Yes  | 10.1.3.13 | 10.1.2.16 | 10.1.2.31 | 
| no  | 10.1.2.7 | 10.1.1.128 | 10.1.1.223 | 
| no  | 10.1.1.62 | 10.1.3.0 | 10.1.3.127 | 
| yes  | 10.1.1.9 | 10.1.4.0 | 10.1.4.255 | 
| no  | 10.1.1.50 | …   | …   | 
| yes  | 10.1.1.200 |    |   | 
+---------+-------------+-------------+------------+ 

Предполагается представить таблицу Excel с 4 столбцами заголовка и 7 строк в качестве примера. я могу сделать поперечный чек с

=IF(AND((B3>C3),(B3 < D3)),"yes","no") 

, который проверяет только 1 адрес от диапазона рядом с ним. Мне нужно что-то, что будет проверять 1 IP-адрес на все диапазоны. то есть строки от 1 до 100.

Это проверяет правила списка доступа к маршрутам, чтобы увидеть, могу ли я устранить избыточные правила ... но имеет другие способы использования, если я могу это сделать. Чтобы сделать его дополнительным, я не могу использовать макросы VBA, чтобы это сделать.

Я думаю, что какой-то индексный совпадение ищет его в массиве, но не уверен, как его применять. Я не знаю, можно ли это сделать. Удачи.

+0

«Я могу выполнить боковую проверку с' = IF (AND ((B3> C3), (B3 reasra

+0

Да, первоначальная боковая проверка, похоже, терпит неудачу. для различных адресов ... – Drew

ответ

1

Итак, я отслеживал эту проблему, так как мой первоначальный комментарий, но не нашли время, чтобы ответить, потому что так же, как Lana B:

Мне нравится хорошая загадка, но это не очень хорошее время, если я должен держать гадать

+1 к Лану за ее терпение и усилие по этому вопросу.

Однако IP-адресация - это то, с чем я регулярно сталкиваюсь, поэтому решил решить эту проблему для себя. Также не наносил урон, но получение MIN начального и MAX конца неверное. Это не будет учитывать пробелы в белом списке IP. Как я уже упоминал, для этого потребовалось 15 вспомогательных столбцов, и мой результат был просто 1 или 0, соответствующий In или Out соответственно.Вот скриншот (с формулами показаны ниже каждого столбца):

Valid IP address worksheet screenshot

Формулы в F2:J2 являются:

=NUMBERVALUE(MID(B2,1,FIND(".",B2)-1))    
=NUMBERVALUE(MID(B2,FIND(".",B2)+1,FIND(".",B2,FIND(".",B2)+1)-1-FIND(".",B2)))   
=NUMBERVALUE(MID(B2,FIND(".",B2,FIND(".",B2)+1)+1,FIND(".",B2,FIND(".",B2,FIND(".",B2)+1)+1)-1-FIND(".",B2,FIND(".",B2)+1)))   
=NUMBERVALUE(MID(B2,FIND(".",B2,FIND(".",B2,FIND(".",B2)+1)+1)+1,LEN(B2))) 
=F2*256^3+G2*256^2+H2*256+I2 

Да, я использовал формулы вместо «Текст по столбцам» для автоматизации процесс добавления дополнительной информации в «живой» рабочий лист.

Формулы в L2:P2 такие же, но заменить B2 на C2.

Формулы в R2:V2 также совпадают, но замените B2 на D2.

Формула X2 является

=SUMPRODUCT(--($P$2:$P$8<=J2)*--($V$2:$V$8>=J2)) 

Я также скопировал оригинал «действительный» установлен в столбце A, который вы увидите матчи моего результата.

+0

Теперь я вижу. Я даже не знаю, что такое белые пробелы, поэтому я просто разбирал цифры, вы правы. С технической точки зрения, для краткого изложения, представленного без достаточной информации и очень ограниченного образца данных, мой ответ уместен, и мне все еще нравилось работать над этим. Но ваш ответ довольно крут и решает проблему. Я собираюсь уделить время, чтобы хорошо погладить его после работы - это хорошее обучение для меня повсюду. Благодаря! –

+0

@ LanaB Да, я больше узнаю от ответа, чем спрашиваю. Кроме того, я ценю, что вы заложили основу для понимания проблемы. Я бы не пробовал без комментариев по вашему ответу. – reasra

+0

Благодарим вас обоих (@LanaB) за ваш вклад. Извините, я не мог быть более ясным в вопросе. Моя таблица маршрутизации (диапазоны адресов) составляет более 20 тыс. Строк, и я неохотно публикую реальные маршруты (даже если они защищены), поэтому с моей стороны наблюдается честная проверка и исправление ошибок.Я должен был использовать таблицу поиска с маской, чтобы получить правильные IP-адреса в правом октетном столбце. Ключ был = F2 * 256^3 + G2 * 256^2 + H2 * 256 + I2 и = SUMPRODUCT (- ($ P $ 2: $ P $ 8 <= J2) * - ($ V $ 2: $ V $ 8> = J2)) для сравнения. Снова, действительно оцените вашу помощь по этому вопросу, С уважением Drew – Drew

2

Вам понадобятся вспомогательные столбцы.

Организуйте свои данные, как указано на рисунке, pls. Разделить адрес, начать и завершить в столбцы запятой (меню ленты Data => Text To Columns).
Над старт/концевые части, вычислите MIN для пуска, и MAX FOR END для всех Раскола частей текста (т.е. MIN (K5: K1000)

ФОРМУЛЫ:.

ДЕЙСТВИТЕЛЬНОСТИ формулы - скопировать в ячейку D5, и перетащить вниз:

=IF(AND(B6>$I$1,B6<$O$1),"In", 
    IF(OR(B6<$I$1,B6>$O$1),"Out", 
    IF(B6=$I$1, 
     IF(C6<$J$1, "Out", 
     IF(C6>$J$1, "In", 
      IF(D6<$K$1, "Out", 
      IF(D6>$K$1, "In", 
       IF(E6>=$L$1, "In", "Out"))))), 
    IF(B6=$O$1, 
     IF(C6>$P$1, "Out", 
     IF(C6<$P$1, "In", 
      IF(D6>$Q$1, "Out", 
      IF(D6<$Q$1, "In", 
       IF(E6<=$R$1, "In", "Out"))))) ) 
))) 

SOLUTION

Я надеюсь, что это решает ее,

PS пожалуйста, не забудьте пометить любой ответ наиболее полезным, как ответ

+0

Спасибо за помощь. Я все равно вытаскиваю ip-адреса из текстовых строк, поэтому разбивать их на октеты не составит труда. В качестве примера я использовал некоторые основные частные адреса, но у моих данных есть смесь публичных и частных IP-адресов, если это имеет смысл. поэтому они могут начать с этого. 10.50 .., 172.30 .. или 203 ... – Drew

+0

Я не уверен, что вы подразумеваете под узким диапазоном и самым широким диапазоном для действительности. Рассмотрите диапазоны как несмежные пулы адресов и проверьте, соответствует ли адрес любому из них. – Drew

+0

Я внесла поправки в свой ответ на работу с любым IP-адресом и проверял, попадают ли адреса в MIN (начало) и MAX (конец) (забудьте об этом, я его переусердствовал). –

 Смежные вопросы

  • Нет связанных вопросов^_^