• ベストアンサー

セルの内容をクエリとしたURLを設定したい。

セルに "abc" と記入されたら、 "http://exsample.com/cgi?=abc" に値を置き換えたいのですが、 どのような関数を使えばよいでしょうか? CONCATINATE関数のヘルプをみてみたのですが、 よくわかりませんでした。

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

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.4

No.1です。 同一セルの内容を入力時に置きかえるのは、関数では無理かと思います。(裏技があるのかもしれませんが…) ちょっとマクロを書いてみました。 シートのタブを右クリックして「コードの表示」を選択すると、VBAの入力画面が起動するので、右の白いところに以下のマクロを貼り付けてください。 Private Sub Worksheet_Change(ByVal Target As Range)   Dim R As Range   For Each R In Target     If R.Column = 1 And R.Row >= 2 And R.Row <= 10 Then       If Not R.Value Like "http:*" Then         R.Value = "http://exsample.co.jp/cgi?=" & R.Value       End If       'URLにリンクを貼りたいときは、次の行の'を削除する       'Hyperlinks.Add R, R.Value     End If   Next End Sub このマクロはA2~A10の範囲に値が入力されたときに、頭に http://exsample.co.jp/cgi?= をつけるように変換します。 セル範囲の指定は、 If R.Column = 1 And R.Row >= 2 And R.Row <= 10 Then の行を適切なものに書き換えてください。 R.Column = 1 というのが「入力したセルが1列目ならば」という条件、すなわちA列を意味しています。B列なら2、C列なら3になります。 R.Row >= 2 は「2行目以上なら」、R.Row <= 10 が「10行目以下なら」という条件です。 C20からC30までの範囲に絞る場合は、 If R.Column = 3 And R.Row >= 20 And R.Row <= 30 Then のようになります。 それから注釈も書いてますが、そのままハイパーリンクの設定をしたい場合は、 'Hyperlinks.Add Target, Target.Value の最初の'(アポストロフィ)を削除してください。

zuntata99
質問者

お礼

ご回答ありがとうございます。 空欄の時に処理を行わないよう(&リンクの下線を消す) に変更を加えて解決できました。 Private Sub Worksheet_Change(ByVal Target As Range) Dim R As Range For Each R In Target If R.Column = 4 And R.Row >= 3 And R.Row <= 50 Then If R.Value = "" Then Exit Sub End If Hyperlinks.Add R, "​http://exsample.com?pr="​ & R.Value R.Font.Underline = xlUnderlineStyleNone End If Next End Sub

その他の回答 (3)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.3

#2です。 同セルだと関数では出来ません。VBAを使っていいなら... シートの見出しを右クリックして「コードの表示」で出てくる場所に 下記のコードをコピーして貼り付けてください。 Private Sub Worksheet_Change(ByVal Target As Range) If Left(Target, 5) = "http:" Then Exit Sub Target.Value = "http://exsample.com/cgi?=" & Target.Value With ActiveSheet .Hyperlinks.Add .Range(Target.Address), Target.Value End With End Sub ※1.http:で始まる文字は除外してますが、他に除外する文字があれば追加してください。 ※2.特定の列・行・範囲の場合は、範囲を絞る設定の追加が必要です。

zuntata99
質問者

補足

ご回答ありがとうございます。 空欄の時に処理を行わないよう(&リンクの下線を消す) に変更を加えて解決できました。 Private Sub Worksheet_Change(ByVal Target As Range) Dim R As Range For Each R In Target If R.Column = 4 And R.Row >= 3 And R.Row <= 50 Then If R.Value = "" Then Exit Sub End If Hyperlinks.Add R, "http://exsample.com?pr=" & R.Value R.Font.Underline = xlUnderlineStyleNone End If Next End Sub

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

別のセルでいいなら =Hyperlink("http://exsample.com/cgi?="&A1) で出来ませんか?

zuntata99
質問者

補足

ご回答ありがとうございます。 すみません、同一セルになります。

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

同じセルの内容を置きかえたいということですか? 違うセルでよければ、他のセルに ="http://exsample.co.jp/cgi?="&A1 とすればA1に入力した値と結合します。 B1に http://exsample.co.jp/cgi? と入れておいて、 =B1&A1 でも同じです。 入力したセルの内容を置きかえたい場合、見た目だけがそのように見えればいいのであれば、表示形式を "http://exsample.co.jp/cgi?="@ とすればいいのですが、多分そういうことではないですよね? このセルの「値」を実際に取りだして使うために、値としてURLに変換しないといけないのであれば、マクロを使うしかないような気がします。どの範囲のセル番地をURLに置きかえたいのか補足していただければ、マクロはすぐに書けますが…。

zuntata99
質問者

補足

ご回答ありがとうございます。 はい、他のセルではなく、自(?)セルになります。 入力して、セルの内容を確定したら、その値をクエリとした URLリンクを設定したいのです。 やはり関数レベルでは難しいでしょうか。。。

関連するQ&A

専門家に質問してみよう