ここから本文です

ユーザー定義関数によるTEXTJOINについて質問します。 某サイト様から以下のユ...

api********さん

2018/7/3016:27:20

ユーザー定義関数によるTEXTJOINについて質問します。

某サイト様から以下のユーザー定義関数をコピーしました。
これを以下のように改造したく思います。

1つ目のテキストの頭には①を、
2つ目のテキストの頭には②を、
のように、各テキストの頭に丸数字をつけたく思います。
⑩まであれば十分です。

どうかよろしくお願いします。

Function TEXTJOIN(Delim, Ignore As Boolean, ParamArray par())

Dim i As Integer
Dim tR As Range

TEXTJOIN = ""
For i = LBound(par) To UBound(par)
If TypeName(par(i)) = "Range" Then
For Each tR In par(i)
If tR.Value <> "" Or Ignore = False Then
TEXTJOIN = TEXTJOIN & Delim & tR.Value2
End If
Next
Else
If par(i) <> "" Or Ignore = False Then
TEXTJOIN = TEXTJOIN & Delim & par(i)
End If
End If
Next

TEXTJOIN = Mid(TEXTJOIN, Len(Delim) + 1)

End Function

閲覧数:
101
回答数:
2
お礼:
250枚

違反報告

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

dio********さん

2018/7/3017:20:27

引数par()がセル範囲だった場合
For i = LBound(par) To UBound(par)
というループが何を表すのか分からなかったので、的外れな回答でしたらすみません。

あと、TEXTJOINだとワークシート関数と同じ名前になってしまうので、myTEXTJOINなどのようにユーザー定義関数だと分かるものにした方が良いのではないかと思いました。

add と chg のところが修正個所です。

Function TEXTJOIN(Delim, Ignore As Boolean, ParamArray par())

    Dim i As Integer
    Dim tR As Range
    Dim icnt As Long 'add
    Const cnsMaruSuji As String = "①②③④⑤⑥⑦⑧⑨⑩" 'add

    TEXTJOIN = ""
    icnt = 1 'add
    For i = LBound(par) To UBound(par)
        If TypeName(par(i)) = "Range" Then
            For Each tR In par(i)
                If tR.Value <> "" Or Ignore = False Then
'                    TEXTJOIN = TEXTJOIN & Delim & tR.Value2
                    TEXTJOIN = TEXTJOIN & Delim & Mid(cnsMaruSuji, icnt, 1) & tR.Value2 'chg
                    icnt = icnt + 1 'add
                End If
            Next
        Else
            If par(i) <> "" Or Ignore = False Then
'                TEXTJOIN = TEXTJOIN & Delim & par(i)
                TEXTJOIN = TEXTJOIN & Delim & Mid(cnsMaruSuji, i + 1, 1) & par(i) 'chg
            End If
        End If
    Next

    TEXTJOIN = Mid(TEXTJOIN, Len(Delim) + 1)

End Function

  • 質問者

    api********さん

    2018/7/3018:08:57

    ありがとうございます。
    希望通りに実行できました!

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

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

1〜1件/1件中

all********さん

2018/7/3016:48:00

Excel2016 のTEXTJOIN関数でなら
例A1 はスペース入力
E11:E10 ①~➉

=MID(TEXTJOIN(E1:E10,1,A1:A11),2,21)

Excel2016 のTEXTJOIN関数でなら
例A1 はスペース入力
E11:E10 ①~➉...

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

この質問につけられたタグ

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

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

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

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

閉じる

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

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

閉じる