どうも、はむばねです。
今日も今日とて微妙に早起きできたので、今日こそは朝のうちに更新します。
ネタとしては、昨日質問を受けたものの、結局ついぞ答えを導くことができなかった問題について。
Excelの、ハイパーリンクに関してなんですけどね。
Excelのハイパーリンクでは、他のセルへのリンクを張ることもできるじゃないですか。

あなたに送る独り言byはむばね


こんな感じに。
んで、質問してきた方はですね。
たとえば1番目のセルがB1~E5へのリンクだとすると、2番目のセルでB6~E10へ、3番目のセルはB11~E15へ、と順番にリンクを張っていきたかったらしいのですよ。
いちいち入力するのはクソめんどいので、これが自動でピピッとできればいいですよね、という話。

んで、単純に考えるとオートフィルが使えるんじゃないかなーと思うわけですよ。


あなたに送る独り言byはむばね

こんな感じで、ググッと下げてやると。



あなたに送る独り言byはむばね

こんな風にリンクが張られる、ってね。
まぁでもそこまでは質問者の方も試されたようで。




あなたに送る独り言byはむばね

実際にはこうなる(全て同じリンク先が参照される)のですね。
家でやると表示上の数値だけは変わりましたが(まぁEだけですが)、やっぱりリンク先はそのままです。


んで、これがどうにかならないんですか? という質問でした。
ぶっちゃけ知らねぇよという話なんですが、聞かれたからには全力で調べましたよ。
でも、どうも調べてみる限りお手軽にできる方法はなさそうな感じ?
ならば代替手段はないものかと調べて考えて。
最初はリンク先のセルの行番号をあらかじめ別の列に(1,6,11,16……)(5,10,15,20……)という風に保存しておいてリンクの式内で参照するという方法を考えたのですが、どうもそれは美しくない。
というわけで2時間近くに及ぶ試行錯誤の結果、私が至ったベストは下のような形でした。


あなたに送る独り言byはむばね

どうも画像の右が切れるようなので、こっちでも書いておくと、
=HYPERLINK("#Sheet2!B" & 1+(ROW()-1)*5 & ":E" & ROW()*5 )
こんな感じの式を書くことにしたわけです。
行番号を、公差5の等差数列として記述したわけですね。
これなら行ごとに勝手に数字が変わっていきますので、単純なコピペでもOKになってきます。

が、これもちょっとややこいというかめんどいですよね。
というわけで、もっと簡単に同じ機能を得ることができる方法知ってる人募集!



……まぁしかし、ていうかね。
Javaとかに関しての質問なら、それなりに答えるよ?
教科書に書いてあることくらいは基本的にマスターしたつもりですし、それ以上のことも(C言語の経験から)ある程度動作や内部仕様の予測もできる。
しかし、Excelのことまで答えられると思うなよ。
修論のデータとりには使ったけど、ホントにデータ保存してちょっとグラフ作るくらいしかしてないですからね。
ROW()関数や&での結合はおろか、ぶっちゃけハイパーリンクの存在すら昨日初めて知ったわ。
「何ができるか」もわかってない状況で「どうやるか」を考えるなんて、無茶にも程がある。