事前に決定されたカウントに基づいて、列内の複数行のテキストを1つのセルにマージする関数を作成しようとしています。私の目標は、大量のデータのコンパイル/解釈を支援する柔軟な関数を生成することです。私が書いたコードは#NAMEを返しますか?エラーがどこにあるのかわかりません。私のコードは次のとおりです。
Function vmrg(countref As Integer, datref As Integer) As String
If IsEmpty(ActiveCell.Offset(0, -countref)) Then % check if cell containing count is blank
vertmerge = "N/A" % if blank, state N/A
Else
Dim datlst(0 To ActiveCell.Offset(0, -countref).Value - 1) As String
Dim i As Integer
For i = 0 To ActiveCell.Offset(0, -countref).Value - 1
datlst(i) = ActiveCell.Offset(i, -datref).Text %fill array with data
End
vertmerge = datlst(0)
For i = 1 To ActiveCell.Offset(0, -countref).Value - 1 % merge array to a single string
vertmerge = vertmerge & ", " & datlst(i)
End
End
End Function
私はMATLABとC++の経験がありますが、VBAを使用するのはこれが初めてなので、構文が一部の領域で奇妙で、他の領域では間違っている可能性があります。理想的には、データとカウント情報が格納されているセルを参照したいのですが、今のところ、構文を修正し、この関数をさらに開発するための出発点を設定したいと考えています。任意の推奨事項をいただければ幸いです。
コードRev_1:まだ#NAMEの出力がありますか?しかし、私はいくつかの問題を修正したと思います(?)
Function vertmerge(countref As Range, datref As Integer) As String
If IsEmpty(countref) = True Then
vertmerge = "NA"
Else
Dim datlst(0 To countref.Value - 1) As String
Dim i As Integer
For i = 0 To countref.Value - 1
datlst(i) = countref.Offset(i, datref).Text
Next i
vertmerge = datlst(0)
For i = 1 To countref.Value - 1
vertmerge = vertmerge & ", " & datlst(i)
Next i
End
End Function