ここから本文です

Excel vba初心者です。

mar********さん

2019/2/2520:02:54

Excel vba初心者です。

textjoin関数を使いたかったのですが
使用しているバージョンが対応していないので
vbaで大量の文字列の結合をしたいと思っています。

ExcelでA~D列のセルに入れた任意のワードを結合してE列に表示したい場合はどうしたらいいでしょうか。

決まった言葉ではなく、セルに入れたワードを結合し、A列が空欄になったら終わりたいです。

宜しくお願い致します。

補足記載し忘れてしまったのですが、区切り文字をいれて結合したいです。

宜しくお願い致します。

閲覧数:
73
回答数:
4
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

アバター

ID非公開さん

2019/2/2612:39:38

以下のようなユーザー定義関数を定義しておくと最新版のExcelや、Excel 2019 と同じようにワークシートでTEXTJOIN関数が使えると思います。
もちろん、VBAプログラムから呼び出して使う事もできます。

Function TEXTJOIN(区切り文字 As String, IgnoreEmpty As Boolean, ParamArray 文字列() As Variant)
Dim E As Variant, V As Variant, VF As Boolean, L As Long
L = Not IgnoreEmpty
For Each E In 文字列
VF = (TypeName(E) = "Range")
If VF Or IsArray(E) Then
For Each V In E
If VF Then V = V.Value2
If Len(V) > L Then TEXTJOIN = TEXTJOIN & 区切り文字 & V
Next
Else
If Len(E) > L Then TEXTJOIN = TEXTJOIN & 区切り文字 & E
End If
Next
TEXTJOIN = Mid(TEXTJOIN, 2)
End Function

もし動作が異なるところがありましたら御容赦ください。
V = V.Value2 としているところを、V.Text にした方が使い勝手が良さそうですが、互換性を重視しました。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

lgk********さん

2019/2/2607:37:52

いちいちセルに関数を入れず、VBA で一気にやりたいなら、こうです。
区切り文字が何かわからなかったので、ラインフィードにしました。
例えば、"," で区切りたければ、vbLfを"," に置き換えて下さい。
'
Option Explicit
'
Sub Macro1()
'
    Dim Row As Long
    Dim Col As Integer
    Dim OutData As String
'
    For Row = 1 To Cells(Rows.Count, "A").End(xlUp).Row
        OutData = ""
'
        For Col = 1 To 4
            OutData = OutData & vbLf & Cells(Row, Col)
        Next Col
        Cells(Row, "E") = Mid(OutData, 2)
    Next Row
End Sub

プロフィール画像

カテゴリマスター

tai********さん

2019/2/2523:46:20

vba初心者です。
textjoin関数を使いたかった


いったい数式なのかVBAなのかどっち?


VBAならJoin関数だが?

プロフィール画像

カテゴリマスター

gru********さん

2019/2/2520:13:37

こういうユーザー定義関数を使うと幸せ
http://nyoro2.net/wp/?p=463

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる