
【ウチにしか勝てない】からってひどいよ(T_T)
テンプレの解読が難航してて本サイトのレスが全然できてましぇん...orz
どこをいぢればどうなるのか、
どこで何を指定してるのか、
畑が違いすぎて全然わからん(汗
FrontPageExpressの時代が懐かしい(笑
============================================
>宇宙語の解読が難航してて
え?あ!、リバースエンジニアリング(笑)するほどの代物じゃないです。
そもそも「マクロで処理するのが最短・最良」な課題ですし、
「長さ」とか「可読性」とか「速度」とか以前に
機能・仕様面で【冗談】だったことが判明したので…(^^;;
「実は使える」云々は…
「同じ宇宙語でも
ブラックボックスでも良い部分と
ブラックボックスじゃマズい部分があるんじゃねーの?」
「対象の位置とかサイズとか【動く部分】について、
どこで指定してて、どこをどうすればどうなるかさえわかれば、宇宙語でも良くね?」
「こんなめったに発生しないようなタスクについて
理屈が判って【自分で作れる】ようになっても意味なくね?」
「【パラメータの指定が判りやすいコンパイル済みフリーウェア】
みたいなニュアンスで書いてるのに、「速度」はともかく
なんで「保守性」とか「可読性」の点で非難されなきゃならんの?
もしかして、ベクターや窓の森で落とすアプリも全部バラして解析して
【自分で作れる】ようになるまで使うべきでないとか、そういうハナシ?」
「サルでも意味がわかる」というのはもちろん、
「どの参照が何を指定しているかわかる」ということです、念のため。
第1引数:書出列見出セル ⇒ A$12
第2引数:元表データ部分 ⇒ E$3:F$10
第3引数:元表見出行 ⇒ E$2:F$2
第4引数:元表の列全体 ⇒ E:F
という点さえ押さえてれば、リクツなんか判らなくても「使える」し「壊れない」よ。
…なんてことが言いたかったんですが…例が最悪でした。ホントすみません。 orz
============================================
以下参考までに。
普通の(?)配列数式に直せばこんな感じになります。
{
=INDEX(E:F,
INT(
SMALL(
IF(
COUNTIF(OFFSET(E$2:F$2,1,,ROW(E$3:F$10)-ROW(E$2:F$2)),E$3:F$10)
-
(E$3:F$10=OFFSET(E$3:F$10,,-1))
=1,
ROW(E$3:F$10)+1/COLUMN(E$3:F$10),
""),
ROW()-ROW(A$12))
),
1/MOD(
SMALL(
IF(
COUNTIF(OFFSET(E$2:F$2,1,,ROW(E$3:F$10)-ROW(E$2:F$2)),E$3:F$10)
-
(E$3:F$10=OFFSET(E$3:F$10,,-1))
=1,
ROW(E$3:F$10)+1/COLUMN(E$3:F$10),
""),
ROW()-ROW(A$12)),1)-COLUMN(E:F)+1
)
}
基本的には…
1.初出データについて、その位置を【行番号+1/列番号】という形の「単一数値型アドレス」に変換
2.書出番号番目のものについて
「単一数値型アドレス」を【整数部分⇒行番号】,【小数部分の逆数⇒列番号】と再変換
つーだけのハナシです。
なお、列番号をいったん逆数にしてるので、
書出順は【上から/右から】の順になる仕様(w)デス。
============================================
●全体構造
{=INDEX(E:F,
INT(SMALL(【初出データについて(行番号+1/列番号)が入ってる配列】),【書出No】)),
1/MOD(SMALL(【初出データについて(行番号+1/列番号)が入ってる配列】),【書出No】),1)-COLUMN(E:F)+1
)}
●初出データについて(行番号+1/列番号)が入ってる配列
IF(【初出チェック】,ROW(E$3:F$10)+1/COLUMN(E$3:F$10),"")
●初出チェック
COUNTIF(【自行を含め上方のセル範囲】,E$3:F$10)-【直左列と一致するか】=1
※直左列見てるだけなので、多列対応ぢゃありませんでした。
※直左列見てるだけなので、直左列に同一データがあるとアウトでした。
※直左列見てるので、元表がシートの左端にあるとアウトでした。