Существует два варианта операций с поперечными потоками.
Control.InvokeRequired Property
, а второй - использовать
SynchronizationContext Post Method
Control.InvokeRequired полезен только при работе с элементами управления, унаследованными от Control класс, в то время как SynchronizationContext можно использовать в любом месте. Некоторая полезная информация относится к следующим ссылкам:
Пользовательский интерфейс Cross Thread Update | .Net
Пользовательский интерфейс Cross Thread Update с использованием SynchronizationContext | .Net
Как насчет использования vuplook с iferror. Что-то вроде этого столбца D:
= iferror (vuplook (A2; Sheet2! B2: D8; 4; true); vuplook (A2; Sheet3! B2: D8; 4; true))
Это должно получить множитель из листа два, и если его здесь нет, он должен вернуть его из листа 3.
Устраните два, передав поиск в Sheet3, если Sheet2 не работает.
=iferror(iferror(index(sheet2!d:d, match(a2, sheet2!b:b, 0)), index(sheet3!d:d, match(a2, sheet3!b:b, 0))), text(,))