- ベストアンサー
以下条件を実現させるエクセルコードが分かりません。
A列にカンマ区切りで短いテキストを複数(2~4つ程度)書いて B列に URL(http://○○.com/)を書いて ⇒ C列に以下のように出力させる にはどんなエクセル用コードで実現できるでしょうか? ■イメージ A列セル内 B列セル内 あああ,いい,うううう http://○○.com/ ↓ C列セル内(3つ出来上がる) <a href="http://○○.com/" target="_blank">あああ</a> <a href="http://○○.com/" target="_blank">いい</a> <a href="http://○○.com/" target="_blank">うううう</a> A列に一つのテキストだったら ="<a href="""&B1&""" target=""_blank"">"&A1&"</a>" で大丈夫なんですが、A列にカンマ区切りとなると、分かりません。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
ちょっと長いですが ="<a href="""&B1&""" target=""_blank"">"&LEFT(A1,FIND(",",A1)-1)&"</a>"&CHAR(10)&"<a href="""&B1&""" target=""_blank"">"&MID(A1,FIND(",",A1)+1,FIND(",",A1,FIND(",",A1,1)+2)-FIND(",",A1)-1)&"</a>"&CHAR(10)&"<a href="""&B1&""" target=""_blank"">"&MID(A1,FIND(",",A1,FIND(",",A1,1)+2)+1,LEN(A1)-FIND(",",A1,FIND(",",A1,1)+2))&"</a>"
その他の回答 (7)
- cistronezk
- ベストアンサー率38% (120/309)
回答3です。 >1/3や2/3の意味が分かりませんでした^^; 「データの区切り位置」をご存じないようですね。 この機能は、Excelを使いこなす上で知っておくべき基本機能の一つです。よく理解できないマクロより、ご自身のスキルアップには、とても役に立つはずです。
お礼
そうなんですか~。 じゃあちょっと勉強してみます。 ありがとうございます^^
- xls88
- ベストアンサー率56% (669/1189)
≪テキストファイルに出力するマクロの例≫ Sub test1() Dim note As Variant Dim v As Variant Dim fpath As String Dim mytxt As String Dim i As Integer fpath = "D:\goo01.txt" v = Split(Range("A1").Value, ",") For i = 0 To UBound(v) mytxt = mytxt & vbCrLf & "<a href=""" & _ Range("B1").Value & """target=""_blank"">" & v(i) & "</a>" Next i mytxt = Replace(mytxt, vbCrLf, "", 1, 1) Open fpath For Output As #1 '上書きされる Print #1, mytxt Close #1 note = Shell("notepad.exe " & fpath, vbNormalFocus) End Sub
- xls88
- ベストアンサー率56% (669/1189)
>ただなぜか出来上がったものをテキストエディタなどにコピペ・・・ 追加質問ですか? Wordに貼り付けた後、Wordからテキストエディタにコピペしてみてください。
- cistronezk
- ベストアンサー率38% (120/309)
回答3の式の訂正です。 誤) >= IF(A1="","","<a href="""&E1&""" target=""_blank"">"&A1&"</a>") 正) = IF(A1="","","<a href="""&$E1&""" target=""_blank"">"&A1&"</a>") ↑$が抜けてました。 失礼しました。
- cistronezk
- ベストアンサー率38% (120/309)
>A列にカンマ区切りで短いテキストを複数(2~4つ程度)書いて ・・・ >A列セル内 B列セル内 >あああ,いい,うううう http://○○.com/ A列セル内の項目が高々4個ならば、「データ」-「区切り位置」・・・で、1項目1列を割り当てた方が簡単だと思います。以下手順を示します。 (1)例でB列にある内容(http・・・)をE列に移動。 (2)A列を選択し、「データ」-「区切り位置」でウィザードを表示。1/3は何もせず「次へ」。2/3で「区切り文字」の「カンマ」にチェックし完了ボタンを押す。 セルF1に「= IF(A1="","","<a href="""&E1&""" target=""_blank"">"&A1&"</a>")」を入力し、横はI列、下はデータのある行までコピペ。 以上です。
お礼
1/3や2/3の意味が分かりませんでした^^; ですがこんな機能もあるんですね。勉強になりました。 ありがとうございます。
- imogasi
- ベストアンサー率27% (4737/17069)
#1と同じくSplit関数を使っているが 文字列を作るだけでよいなら Sub test01() i = 1 k = 1 y = Cells(i, "A") z = Split(y, ",") For j = 0 To UBound(z) s = "" s = "<a href=" & Chr(34) & Cells(1, "B") & Chr(34) & "target=" & Chr(34) & "_blank" & Chr(34) & ">" & z(j) & "</a>" MsgBox s Cells(k, "C") = s k = k + 1 Next j End Sub ーー C列に <a href="http://○○.com/"target="_blank">あああ</a> <a href="http://○○.com/"target="_blank">いい</a> <a href="http://○○.com/"target="_blank">うううう</a> == しかしHTML文の一部のようなものを、エクセルのセルに出して何をしようとするのか。 この路線の方向性は大丈夫ですか。 もう一段高いレベルの質問内容を出して、この方法が相応しいか、質問で聞いてみたら。 エクセル関数にHYPERLINK関数があるがそれと関係ないですか。 (関係ありそうなら、GoogleでHYPERLINK関数で照会すれば記事がたくさん出る)
お礼
自分もちょっとそう思いました^^; ですが、xls88さんの回答がイメージしたものと同じでしたので何とかなりそうです。 ありがとうございました。
- mitarashi
- ベストアンサー率59% (574/965)
こういう事でしょうか?(骨組みだけです) Sub test() Dim i As Long Dim myCell As Range Dim buf As Variant Set myCell = Range("A1") buf = Split(myCell.Value, ",") For i = 0 To UBound(buf) myCell.Offset(i, 2).Value = myCell.Offset(0, 1).Value & buf(i) Next i End Sub ご参考まで。
お礼
参考になりました。 ありがとうございます。
お礼
あ~こんな感じです! コピペでさっと出来てD&Dでやれるので便利ですね。 ありがとうございます。 ただなぜか出来上がったものをテキストエディタなどにコピペして確認してみると・・ "<a href=""http://○○.com/"" target=""_blank"">aa</a> <a href=""http://○○.com/"" target=""_blank"">bb</a> <a href=""http://○○.com/"" target=""_blank"">cc</a>" みたいに、""が最初と最後に余計に付いてたり、中の""も余計に付いてたりします。。 "を左右消したりしてうまく調節してみてるんですが、なぜかうまくいきません^^l <a href="http://○○.com/"" target="_blank">aa</a> <a href="http://○○.com/" target="_blank">bb</a> <a href="http://○○.com" target="_blank">cc</a> にならないんです(^_^;) 必ずどっかで"が多いはずなんですが。。