重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

Excel で B列に文字データが入っている場合に、
Concatenate(B2,B3,B4,....Bn) という文字列を手入力ではなく、
n の値を読み込んで自動的に作る方法はございますか。

Concatenate を使用することにはこだわりません。
例えば、Concatenate を使わずに、B列の内容のコピーを
Transpose か何か使って空いている行に書き出させて、横一列に並んでいるように見せる方法でもかまいません。

できればマクロは使わずにお願いいたします。

A 回答 (2件)

Concatenateにしろ結合演算子「&」にしろ、可動・変動する範囲に対して式を書くことはむつかしい。

引数が個別に列挙するのが決まりで、:を使える範囲方法ではないから。
ーー
ユーザー定義関数をお勧め。
標準モジュールに
Function con(a As Range)
Dim cl As Range
Dim s As String
s = ""
For Each cl In a
s = s & cl
Next
con = s
End Function
と入れて
シートで
=con(B2:B7)
のように入れる。
>できればマクロは使わずにお願いいたします
質問は難しい内容を望んでいるわけだから、数行のコードの意味ぐらい勉強してください。
エクセル関数だって、プログラム内部的にどういう処理ロジックで結果を出されているか、誰も知らなくて使っているのです。
回答者はもし関数による回答があれば、それを第1に載せると思いますので、こういう注文を書く必要ないと思う。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
ユーザー定義関数でループを使えることが分かり大変感謝いたします。
マクロはセキュリティレベルの設定の関係から扱わずに済むのであればそうしたいという事情でしたが、その点も解決できました。

お礼日時:2007/08/04 17:46

作業列を使う方法です。



B1以降に文字が入力されているとして、

C1に
=B1
と入力。

C2に
=IF(B2="","",C1 & B2)
と入力し、C3以降に多めにコピー&ペースト

D1に
=INDIRECT("C" & COUNTA(B:B))
と入力。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

お礼日時:2007/08/04 17:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!