先日SQLの in 句を作成するためにこのようなことをやっていたのですが
実際にはもう少し単語を繋げていたので何ともイケてないなぁと感じていたら
Join関数があるじゃないかと閃いたんですね。
その時に自分の中で思わぬ発見がありました。
区切り文字(Delimiter)は2文字以上でも大丈夫
SplitやJoinで使う区切り文字て「,」(カンマ)や「 」 (スペース)を1文字だけ指定するものと思っていませんか?
色々な書籍でも区切り文字は1文字しか指定していないと思いますし、私もそう思っていました。
ところが冒頭のSQL文を作成するために無意識のうちにこんなコードを書いてみると
Sub SQLMake() Range("D8").Value = "'" & Join(WorksheetFunction _ .Transpose(Range("D2:D6").Value), "','") & "'" End Sub
こんな風に結合出来るんですよ
この例では区切り文字として「','」の3文字を指定しているのですが、ちゃんと機能しています。
Splitも同じように2文字以上指定できます。先ほど作成した文章を今度はSplit関数で分解してみます。
Sub SplitStr() Range("D10:D14").Value = WorksheetFunction. _ Transpose(Split(Range("D8").Value, "','")) End Sub
この通りちゃんと「','」の3文字で文章を分割することが出来ました(佐藤’になってるのはスルー)。
おまけ
おそらく普通に考えていたら、区切り文字は1文字という思い込みがあったため、今回のような処理を思いつくことはなかったと思います。
みんなSQLのin句にたくさん指定したい時はどうやって書いてるのかなぁ。