Пожалуйста, не так, как для логики, но вот решение, которое дает мне те же результаты. Измените .Find
строку на:
Set c = .Find(what:=lookupRange.Value2, after:=.Cells(1), LookIn:=xlValues, LookAt:=xlWhole)
и дополнительно измените .FindNext
на:
Set c = .Find(what:=lookupRange.Value2, after:=c, LookIn:=xlValues, LookAt:=xlWhole)
. Обратите внимание, что диапазон tableRange
должен иметь названия столбцов. Если нет, то порядок результатов не будет ожидаться с первого взгляда.
Дополнительное (EDITED) объяснение для последнего предложения. Если у вас есть таблица этого типа:
| A | B | C | D |
--+-----+-----+-----+-----+
1 | ABC 1 2 A
2 | ABC 3 4 B
3 | ABC 5 6 C
при поиске ABC в range("A1:D3")
для получения данных из столбца D вы получите результат: BCD
. Чтобы получить ABC
, в первой строке должны быть заголовки столбцов.
Сервер должен иметь открытый IP-адрес, чтобы клиент мог подключиться к нему. Или вам нужно VPN по этим сетям (так что сервер доступен из сети клиента).
Ваша проблема не в Java. Это действительно о том, как работает сеть / адресация IPv4 / IPv6.
Сетевой диапазон 10.0.0.0/24
зарезервирован для частных сетей; см. статью «Личная сеть» Википедии .
Если на сервере есть адрес 10.xx.xx.xx
, а ваш клиент находится в другой сети, то это просто невозможно для вашего клиента для непосредственного подключения к серверу. Сеть вашего клиента просто не может маршрутизировать пакеты в сеть сервера.
(Действительно, есть миллионы сетей по всему миру, которые используют адреса 10.xx.xx.xx
. IP-адрес вашего сервера не уникален ... кроме как в контексте частной сети, к которой он подключен. из множества возможных серверов с IP-серверами (скажем) 10.42.42.42
должны быть отправлены пакеты клиента?)
Возможные решения: