Вам не нужно использовать INDIRECT
из MID
, если вы можете использовать некоторые механизмы блокировки:
=FIND("site",$G1)>0
Здесь вы увидите, что активная ячейка - это A1, поэтому соответствующая строка Excel будет сравнивать ее с G1, когда условное форматирование смотрит на ячейку A2, она будет сравнивать ее с G2.
Когда условное форматирование смотрит на ячейку B2, оно снова сравнивает ее с G2, потому что G была заблокирована (через символ $).
Тем не менее, ваша формула не работает, потому что FIND("site","g"&ROW(),1)
не работает. Второй аргумент дает текст g#
(где # представляет номер строки), и поиск не удается).
ASM
Это намного быстрее, чем BCEL и поддерживает дженерики и аннотации. Одна точка о ее архитектуре: чтобы удостовериться, что высокопроизводительный ASM создается вокруг синтаксического анализатора, который бросает события (в отличие от BCEL, где синтаксический анализатор создает структуру данных). Это несколько подобно различию между SAX и синтаксическими анализаторами DOM. Требуется некоторая практика для привыкания к этому виду взглядов.
РЕДАКТИРОВАНИЕ (После комментария McDowell): Действительно посетители в большой степени используются в ASM, но это - больше, чем простые посетители: посещаемая структура данных лениво создается синтаксическим анализатором, поэтому если Вы не интересуетесь определенными частями classfile (например, Вы хотите знать названия методов, но Вы не заботитесь об их теле), можно возвратить пустой указатель из visitMethod () метод. Это заставит синтаксический анализатор пропустить разделы тела метода, таким образом, предотвращающие (дорогую) конструкцию сети объектов, полностью описывающих метод.
Существует довольно полный пример использования ASM, чтобы сгенерировать код байта с подобного Java промежуточного языка в реализации CAL (подобный Haskell язык для JVM). При загрузке источников по http://openquark.org/Open_Quark/Download.html затем, можно найти код в AsmJavaByteCodeGenerator.java и классы модели Java в той же папке. Сгенерированный код в основном, что javac сделал бы минус аннотации отладки.
Реализация CAL первоначально использовала BCEL, но переключилась на ASM, потому что ASM был значительно быстрее (вероятно, порядок величины), и так же, как значительно, ASM ориентирован на многопотоковое исполнение, так, чтобы параллельная компиляция была возможна, который необходим CAL.
Javassist и cglib являются двумя хорошими библиотеками разработки байт-кода. Они используются экстенсивно в Java мир EE для генерации прокси объектов во времени выполнения. Будьте в спящем режиме и Spring две ведущих платформы, использующие эти библиотеки.
Существуют технологии как asm и cglib, но я рекомендую Javaassist, потому что это - очень хорошая библиотека для этого, и можно найти примеры в tapestry5 платформе.
Почему бы не использовать компилятор Java, javac? Что случилось с использованием его, чтобы сгенерировать код байта JVM?
[Серьезно. Что мешает Вам брать Ваш источник, делая Java и компилируя его?]
Я думаю, что моего любимого создателя байт-кода Java называют javac, и можно найти его по www.sun.com
http://serp.sourceforge.net/ - отличная библиотека для большей абстракции при редактировании байт-кода.