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も包含できるので、結構良い感じ。
コメント