- ベストアンサー
【VBA】文字をくっつける自作関数わかりますか?
例えば、 A1に「あ」 B1に「い」 C1に「う」 ・ ・ ・ という風に文字が入っているとします。 =fw(A1:C1) で「あいう」というような文字列の結果が欲しいのですが、 自作関数に関して知識が乏しいのでどういうのを書けばいいかわかりません。 詳しい方、いい案があったら教えてもらえないでしょうか。 ちなみに文字を接続する関数の=CONCATENATE(A1:C1)では「あ」としか出ませんでしたorz
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
標準モジュールに Public Function fw(rng As range) As String Dim c As Long Dim str As String For c = 1 To rng.Columns.Count str = str & rng(rng.row, c) Next fw = str End Function ではどうでしょうか? P.s. エリアの場合は以下で Function fw(rng As range) As String Dim r As Long Dim c As Long Dim str As String For r = 1 To rng.Rows.Count For c = 1 To rng.Columns.Count str = str & rng(r, c) Next Next fw = str End Function
その他の回答 (5)
- imogasi
- ベストアンサー率27% (4737/17069)
標準モジュールに Function fw(a) Dim cl As Range s = "" For Each cl In a s = s & cl Next fw = s End Function 使い方=fw(a1:E1) 2列、2行以上の指定も可。 ーー A1:E1 1 s f asdf ert A12に1 B12に=A12&B1 右方向に式を複写 E12で1sfasdfert となります。参考に。
お礼
参考になりました。 どうもありがとうございました。
- zap35
- ベストアンサー率44% (1383/3079)
もう解決されたかもしれませんが、こんなユーザ定義関数でも可能です。複数範囲指定を可能にしました。 シートには =StrBind(A6:A7,B9:B20,D5) のようにセル範囲を「,」で区切って入力してください Private Function StrBind(ParamArray rng()) As String Dim r As Range Dim i As Long For i = LBound(rng) To UBound(rng) For Each r In Range(rng(i).Address) StrBind = StrBind & r.Text Next r Next i End Function ただしエクセル2003まではセルに表示可能な文字数は1,024文字までです。セルに直接文字を入力する場合は数式バーに32,767文字まで入力可能ですが、セルにはすべて表示できません。 >1000個以上の連結したいセルがあるので では実用に耐えないかもしれませんので、お気をつけください。
お礼
いろんな方法があるんですね。 どうもありがとうございます。
- pbforce
- ベストアンサー率22% (379/1719)
Cells(1,1)&Cells(1,2)&Cells(1,3) ならわかりますか?
補足
もちろんわかりますが1000個以上の連結したいセルがあるので範囲指定できる関数を望んでいます。
- Murasan759
- ベストアンサー率59% (312/527)
=CONCATENATE(A1,B1,C1) 各関数のヘルプを参照して、書式を確認しましょう。
補足
いや、そうじゃなくて。 A1:C1で「あいう」と出したいのです。 なんせくっつけたいセルが1000個以上あるのでA1,B1,C1,D1・・・と書いていくわけにはいきません。
- pbforce
- ベストアンサー率22% (379/1719)
A1&B1&C1をヒントに自作して下さい。
お礼
すばらしい! プリントアウトして勉強させていただきます! ありがとうございました!