- ベストアンサー
セルの内容をクエリとしたURLを設定したい。
セルに "abc" と記入されたら、 "http://exsample.com/cgi?=abc" に値を置き換えたいのですが、 どのような関数を使えばよいでしょうか? CONCATINATE関数のヘルプをみてみたのですが、 よくわかりませんでした。
- みんなの回答 (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 の最初の'(アポストロフィ)を削除してください。
その他の回答 (3)
- mshr1962
- ベストアンサー率39% (7417/18945)
#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.特定の列・行・範囲の場合は、範囲を絞る設定の追加が必要です。
補足
ご回答ありがとうございます。 空欄の時に処理を行わないよう(&リンクの下線を消す) に変更を加えて解決できました。 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)
別のセルでいいなら =Hyperlink("http://exsample.com/cgi?="&A1) で出来ませんか?
補足
ご回答ありがとうございます。 すみません、同一セルになります。
- ham_kamo
- ベストアンサー率55% (659/1197)
同じセルの内容を置きかえたいということですか? 違うセルでよければ、他のセルに ="http://exsample.co.jp/cgi?="&A1 とすればA1に入力した値と結合します。 B1に http://exsample.co.jp/cgi? と入れておいて、 =B1&A1 でも同じです。 入力したセルの内容を置きかえたい場合、見た目だけがそのように見えればいいのであれば、表示形式を "http://exsample.co.jp/cgi?="@ とすればいいのですが、多分そういうことではないですよね? このセルの「値」を実際に取りだして使うために、値としてURLに変換しないといけないのであれば、マクロを使うしかないような気がします。どの範囲のセル番地をURLに置きかえたいのか補足していただければ、マクロはすぐに書けますが…。
補足
ご回答ありがとうございます。 はい、他のセルではなく、自(?)セルになります。 入力して、セルの内容を確定したら、その値をクエリとした URLリンクを設定したいのです。 やはり関数レベルでは難しいでしょうか。。。
お礼
ご回答ありがとうございます。 空欄の時に処理を行わないよう(&リンクの下線を消す) に変更を加えて解決できました。 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