- ベストアンサー
マクロでの別シートへの書き出しについて
- マクロを使用してSheet1のA1に入力された長いコードから特定の文字列を切り取り、別のシートに書き出す方法について説明します。
- 具体的には、Sheet1のA1に入力されたコードから先頭の18文字を除き、取得した文字列の先頭から1文字飛ばした16文字をSheet2のA1に書き出し、その続きの16文字をSheet2のB1に書き出します。
- また、Sheet2のA2には、先ほど書き出した文字列の次の16文字を書き出し、Sheet2のB2にはその続きの16文字を書き出します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 補足欄について。 つまり、(1)と(2)を、A1の文字数に応じて繰り返すということでしょうか。 それなら、こんな感じかな。 Dim strCode As String Dim i As Long strCode = Worksheets("Sheet1").Range("A1").Value i = 1 Do Until (i - 1) * 52 >= Len(strCode) With Worksheets("Sheet2") .Cells(i, 1).Value = Mid(strCode, 20 + (i - 1) * 33, 16) .Cells(i, 2).Value = Mid(strCode, 36 + (i - 1) * 33, 16) End With i = i + 1 Loop
その他の回答 (1)
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 Mid関数を使用すればいいのでは? Dim strCode As String strCode = Worksheets("Sheet1").Range("A1").Value With Worksheets("Sheet2") .Range("A1").Value = Mid(strCode, 20, 16) .Range("B1").Value = Mid(strCode, 36, 16) .Range("A2").Value = Mid(strCode, 53, 16) .Range("B2").Value = Mid(strCode, 69, 16) End With
補足
回答ありがとうございます。 関数で同じように作成していたのですが、Sheet1のA1に入るコードの文字数が果てしない数なので、VBAでループ出来たらなと思いまして質問しました。A1のコードの文字数を出して、ループするにはどうしたら良いのでしょうか? 説明が足らずすいませんでした
お礼
ありがとうございます。 Do Until (i - 1) * 52 >= Len(strCode) の部分がなかなかできず、困っていましたが解決しました!