- ベストアンサー
構文の解説をつけてください。
- この質問文章は、VBAのコードでエクセルのデータを別のシートに分割保存するためのマクロです。
- まず、新しいシートを追加し、データを格納するための列を作成します。
- 次に、元のシートからデータを読み取り、各セルの値を別のシートに分割保存します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>set w0 = activesheet アクチブシートオブジェクトをW0と名前付け。 >worksheets.add after:=w0 ワークシートについて、(W0シートのタブの右側に)1シートを挿入。 >range("A1:G1") = array("苗字","名前","住所","TEL","〒","好きなスポーツ","性別") 配列6項目を作り(右辺の処理)、それを同一行の横方向セルA1:G1の5つのセルに1度で値をセット。 >a = split(replace(application.trim(replace(replace(h, " "," "),":",":")),": ",":"), " カンマで目印にして、文字列を「区切り」り、配列に入れる。 Replaceは各セルの文字列について、3段構えで、ネストして置換している。 スペースと:と:(半角)の3段。Replace関数の第1引数に3つ文字を1度に指定できないので、ネストして1文字ずつReplaceして3段で置換。 for each h in w0.range("A1:A" & w0.range("A65536").end(xlup).row) A列の最終行のせるまでについて各セルを順次処理対象セルhにする。 ForEachで対象の各セルについての処理の繰り返し。 >cells(r, "A") = split(a(0), ":")(1) a(0)の文字列を:で分割し、最初の部分をセル(r行目のA列)に代入する。 (1)は卑劣配列に入ったものの第1番目。 以下cells(r, "F") =の部分は同じ。 a()そのまま代入しているのは cells(r, "F") = a(5) cells(r, "G") = a(6) の行。
お礼
回答ありがとうございます。 大変助かりました!! また何かありましたら宜しくお願い致しますm(_ _)m