pythonの環境構築してて、環境変数のパスを作るのが地味にだるかった。
というわけで、EXCELで文字列結合して作ろうと思ったのだが、標準の関数がいまいち使いにくかったので作成。
基本的には、TEXTJOINと似た感じの作り。TEXTJOINは結合する要素を1個づつ選択しないといけないけど、TEXTJOIN2Dは範囲で指定できる。
また、行方向と列方向で区切り文字の種類を変えることができる。
そのため、下図のような感じで使うと、

C:\Anaconda3\envs\Anaonda_base;C:\Anaconda3\envs\Anaonda_base\Scripts;C:\Anaconda3\envs\Anaonda_base\Library\bin
という感じで、環境変数に設定する文字列を1発で返してくれる。
'指定した区切り文字(strSep)で区切った文字列を返す。
'strSepH: 列方向区切り文字
'strSepV: 行方向区切り文字
'F_IgVoid: TRUEで空のセルを無視
'DirectionV: trueにすると、要素の結合順序方向を垂直方向に行う。
'https://memo-nikki.info/?p=2976
Function TEXTJOIN2D(strSepH As String, strSepV As String, F_IgVoid As Boolean, rng As Range, Optional DirectionV As Boolean = False)
Dim n As Long, n_row As Long, n_col As Long
n = rng.Count
n_row = rng.Rows.Count
n_col = rng.Columns.Count
Dim sep As String
Dim i As Long, j As Long, k As Long
i = 1
j = 1
sep = ""
TEXTJOIN2D = ""
For k = 1 To n
If Not (F_IgVoid And "" = rng.Item(i, j)) Then
If "" = TEXTJOIN2D Then
sep = ""
End If
TEXTJOIN2D = TEXTJOIN2D & sep & rng.Item(i, j)
End If
If DirectionV Then
i = i + 1
sep = strSepV
If i > n_row Then
i = 1
j = j + 1
sep = strSepH
End If
Else
j = j + 1
sep = strSepH
If j > n_col Then
j = 1
i = i + 1
sep = strSepV
End If
End If
Next
End Function
使い方
この辺を参照
感想
取り合えず、この関数一つで、CONCATやCONCATENATEも包含できるので、結構良い感じ。



コメント