• ベストアンサー

エクセル2000でこんなとき、何か方法ありますか?

エクセルで表を作っています。 ファイル1の「あいうえお」というシートのセルA1からA20に、それぞれファイル2の「あいうえお」というシートのC1からC20にジャンプするハイパーリンクを設定したいと思っています。 つまり、ファイル1のシートあいうのA1はファイル2のシートあいうえおのC1に、 ファイル1のシートかきくけこのA10ならファイル2のシートかきくけこのC10にとぶハイパーリンクを設定したいんです。 1つのシートに貼りたいハイパーリンクは30あり、1ファイルにはシートが15ほどあるので、これを一つ一つ設定していくと、途方もない作業になってしまいます。 フィルやコピーの機能でセルの連続データができるように、なんとかうまくハイパーリンクを貼る方法はないでしょうか? また、できないなら、何とか作業を少なくする方法やアイディアはないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • tbobi
  • ベストアンサー率45% (544/1189)
回答No.3

またまた#1です。訂正と追加回答です。 まず訂正。 ↓この部分は勘違いですので無視してください。「ファイルB」と誤記もしてしまいました。 「そのほかに思いついたのは」~ 「ファイル2.xlsのあいうえおシートのA列の1行目に飛ぶハイパーリンクです。 」 追加回答です。 整理すると ファイル1 シートあいう A1 ↑ファイル2シートあいうのA1へのハイパーリンク  ファイル2シートあいうのC1を参照   ファイル2 シートあいう A1 データ入力 B1 データ入力 C1 A1,B2からの検索結果(ハイパーリンク無し) これでよいですか? ハイパーリンクをつけるのはファイル1の各シートのA列だけということで。 それなら、ファイル1 シートあいうのA1には、 =HYPERLINK("ファイル2.xls#あいう!A"&ROW(),[ファイル2.xls]あいう!C1) とすればできます。 ,(コンマ)以降の部分は、参照先ブックのセルをクリックしてENTERキーを押せば指定が簡単です。 すると絶対参照$C$1になってしまいフィルコピーがきかないので、ご自分でC1というかたちになおしてください。 あとは#1で書いた「コピー」と「置換」をすればうまくいくでしょう。

pero1234
質問者

お礼

何度も回答ありがとうございます。そのとおりです。量の多さに途方にくれていたのですが、おかげでなんとかなりそうです。エクセルはけっこう使えるつもりでしたが、まだまだできることはたくさんあるようですね。勉強します。

その他の回答 (4)

  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.5

>右上とはどこなんでしょう?探してみたのですが >・・・場所がわかりませんでした。 左上の間違いでした。 それと、シート名タブ(Sheet1)を右クリックすると、Sheet1(Sheet1)のOption Explicit がでるので、Sheet1(Sheet1)をダブルクリックする必要はありませんでした。

pero1234
質問者

お礼

どうもありがとうございました。マクロ便利ですね。まだ、記録したものを少し修正するくらいのことしかできないので、これからぜひ覚えていきたいです。

  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.4

>ファイル1のA1をクリック→ハイパーリンクによりファイル2 >のシートあいうえおのA1にとぶ→そこと隣のB1にデータを記入 ここの部分だけをマクロで書いてみました。 ファイル1の 使用しているシート名タブ(Sheet1とかSheet2)を右クリックし、「コードの表示」を選択します。 右上の、Sheet1(Sheet1)をダブルクリックします。 Option Explicit がでるので、その下に'***から'***までをコピーし貼り付けします。 '*** Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim www1 As Integer Dim www2 As Integer If Target.Column <> 1 Then Exit Sub If Target.Row > 20 Then Exit Sub www1 = Target.Row www2 = Target.Column Windows("ファイル2.xls").Activate Sheets("あいうえお").Activate Call aaa(www1, www2) End Sub '*** つぎに[挿入]→[標準モジュール] Option Explicit がでるので、その下に'***から'***までをコピーし貼り付けします。 '*** Sub aaa(www1 As Integer, www2 As Integer) Cells(www1, www2).Select End Sub '*** 実行方法 ファイル1とファイル2を開いておく ファイル2には、"あいうえお"という名のシートを作っておく ファイル1のSheet1のA1:A20のどれかをクリックすると、自動的に、ファイル2の、"あいうえお"のA1:A20に移動する。 この方法で、ファイル2から、ファイル1に戻ることもできます。

pero1234
質問者

お礼

回答どうもありがとうございます。マクロは便利ですね、とても早くできそうです。  >右上の、Sheet1(Sheet1)をダブルクリックします   Option Explicit がでるので、その下に'***から'***までをコピーし貼り付けします。 とありますが、右上とはどこなんでしょう?探してみたのですが・・・場所がわかりませんでした。

  • tbobi
  • ベストアンサー率45% (544/1189)
回答No.2

#1です。遅れてすみません。 >ROW関数の()内は何を入れてもいいということなんでしょうか? すみません。私の意図した式の場合、()の中に何も入れなくても大丈夫みたいです。row()のままでOK。 参考になりそうなページ調べていたら、そう書いてありました(恥) http://arena.nikkeibp.co.jp/tec/excel/gaz/56/ >ファイル2は、ファイル1の表の項目のうち1つの項目の詳細を別表にしたもので、 ファイル1のA1をクリック→ハイパーリンクによりファイル2のシートあいうえおのA1にとぶ→そこと隣のB1にデータを記入→その計算結果であるC1のセルの値がファイル1のA1に表示される hyperlink関数は hyperlink("ハイパーリンク先(URL等)",表示する文字) とでき、今回は「表示する文字」を省略しましたが、 ここに関数も入れることができるようです。 例えばこんな具合に。 =HYPERLINK("ファイル2.xls#あいうえお!C"&ROW(),SUM(A2:A3)) こうすると、sum(A2:A3)の計算の結果を表示できます。 そのほかに思いついたのは、 ファイルBのA列に列を挿入し、ハイパーリンクのリンク先をそこにするという方法です。挿入した列を非表示にしておけば、見た目もいままでと変わりません。 =HYPERLINK("ファイル2.xls#あいうえお!A"&ROW()) ↑ ファイル2.xlsのあいうえおシートのA列の1行目に飛ぶハイパーリンクです。 あとは、マクロを使って、 ファイル1のアクティブなシートのアクティブなセル(ファイル1の開いているシートのカーソルがあるセル)から、シート名(A)とセル番号(B)を取得して、ファイル2のシート名(A)のセル番号(B)のセルに飛ぶこともできそうですが、マクロは初心者なので自信なしです。

参考URL:
http://arena.nikkeibp.co.jp/tec/excel/gaz/56/
  • tbobi
  • ベストアンサー率45% (544/1189)
回答No.1

pero1234さんこんばんは。 ハイパーリンク関数を使うとうまくいきそうです。 http://arena.nikkeibp.co.jp/tec/excel/gaz/190/ ファイル1のあいうえおシートのA1セルに以下を入れます。 =HYPERLINK("ファイル2.xls#あいうえお!C"&ROW(E1)) これをA20までドラッグコピーします。 A1~A20を選択してコピーし、 かきくけこシートにコピーします。 コピーしたら 編集 > 置換で、ハイパーリンク内の あいうえお を かきくけこ に置換します。 残りのシートに対して同じ要領で作業します。 ※ファイル名の部分は同じフォルダならパスを指定しなくてもうまくいきました(excel2002)。別のフォルダならば、直して指定してください。 ※ROW関数で同じ行の行番号を参照して、その結果連番コピーを実現しています。ROW()のかっこの中は同じ行ならどこでもよいです。 これでうまくいくと思います。 今日はもう寝るので何かあれば明日ということで。

参考URL:
http://arena.nikkeibp.co.jp/tec/excel/gaz/190/
pero1234
質問者

補足

回答ありがとうございます。ハイパーリンク、関数でも設定できたんですね。知りませんでした。 書くのを忘れてしまいましたが、今回ハイパーリンクを設定したいセルにはすでに別の関数が入っているんです。ファイル2は、ファイル1の表の項目のうち1つの項目の詳細を別表にしたもので、 ファイル1のA1をクリック→ハイパーリンクによりファイル2のシートあいうえおのA1にとぶ→そこと隣のB1にデータを記入→その計算結果であるC1のセルの値がファイル1のA1に表示される ・・・・ややこしいけどこんな流れにしたかったため、すでに関数を書き込んじゃっているんで、せっかくのハイパーリンク関数なんですけど、私にはうまく使えません(泣) なんにせよ、教えていただいたことは別の場所で活用させていただきます、ありがとうございます。ROW関数の()内は何を入れてもいいということなんでしょうか?

関連するQ&A