• ベストアンサー

【VBA】文字をくっつける自作関数わかりますか?

例えば、 A1に「あ」 B1に「い」 C1に「う」 ・ ・ ・ という風に文字が入っているとします。 =fw(A1:C1) で「あいう」というような文字列の結果が欲しいのですが、 自作関数に関して知識が乏しいのでどういうのを書けばいいかわかりません。 詳しい方、いい案があったら教えてもらえないでしょうか。 ちなみに文字を接続する関数の=CONCATENATE(A1:C1)では「あ」としか出ませんでしたorz

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

  • ベストアンサー
回答No.4

標準モジュールに 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

sineminna
質問者

お礼

すばらしい! プリントアウトして勉強させていただきます! ありがとうございました!

その他の回答 (5)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.6

標準モジュールに 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 となります。参考に。

sineminna
質問者

お礼

参考になりました。 どうもありがとうございました。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.5

もう解決されたかもしれませんが、こんなユーザ定義関数でも可能です。複数範囲指定を可能にしました。 シートには  =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個以上の連結したいセルがあるので では実用に耐えないかもしれませんので、お気をつけください。

sineminna
質問者

お礼

いろんな方法があるんですね。 どうもありがとうございます。

  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.3

Cells(1,1)&Cells(1,2)&Cells(1,3) ならわかりますか?

sineminna
質問者

補足

もちろんわかりますが1000個以上の連結したいセルがあるので範囲指定できる関数を望んでいます。

回答No.2

=CONCATENATE(A1,B1,C1) 各関数のヘルプを参照して、書式を確認しましょう。

sineminna
質問者

補足

いや、そうじゃなくて。 A1:C1で「あいう」と出したいのです。 なんせくっつけたいセルが1000個以上あるのでA1,B1,C1,D1・・・と書いていくわけにはいきません。

  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.1

A1&B1&C1をヒントに自作して下さい。

関連するQ&A