
1行に文字数不定(3159~81文字)で270行ほどデータがプロットされています。
カンマを区切り文字にして区切りたいのですが、Excelの仕様の列数をオーバーしてしまうので一行のデータを固定した数で切り取って、別なシートに貼り付けて横方向の長さを削減したデータの形に持っていきたいと思っています。
固定長の文字列だけ切り取り→別シートに貼り付け→また切り取り→別シートの次の行に貼り付けというしょりを繰り返したいのですが肝心の切り取りの部分のコードでエラーが出てしまいます。
Dim Cutter As String
中略
sheet1.cells(1,1).Len(Cutter,81).Cut
中略
End Sub
エラーの内容を見る限り、Len関数がCutメソッドをサポートしていないということらしいのですが、決まった文字数だけ切り取るには他に表現できないものでしょうか?
No.1ベストアンサー
- 回答日時:
こんにちは。
本来、一行の文字をカンマ区切りというと、どうも、古いデータベースのデータではないかと思うのです。シーケンシャルファイルですと、以下のようなコードではありません。ただ、それは明らかにされていませんから、Excelの標準的なSplit 関数(Excel 2000以降)を用いています。
'-------------------------------------------
Sub SplitTest1()
Dim Ar As Variant
Dim Ar2() As Variant
Dim i As Long
Dim j As Long
Dim n As Integer
Dim k As Integer
Const iCOL As Integer = 10 '列数
Ar = Range("A1").Value '対象セル
If Len(Ar) = 0 Then Exit Sub
Ar = Split(Ar, ",") 'カンマ区切り
n = Int(UBound(Ar) / iCOL) + Abs(CInt((UBound(Ar) Mod iCOL) > 0))
ReDim Ar2(n, iCOL - 1)
For i = LBound(Ar) To UBound(Ar)
Ar2(k, j) = Ar(i)
If i Mod iCOL = iCOL - 1 Then
k = k + 1
j = -1
End If
j = j + 1
Next i
'貼り付け先
Worksheets("Sheet2").Range("A1").Resize(n, iCOL).Value = Ar2()
End Sub
ありがとうございました。
区切り処理=列数オーバー→まずは1列に変換しよう
という頭しかなくなってしまって、配列処理することまで考えていませんでした(^^;)
No.2
- 回答日時:
Len関数は、通常 Len(string) で用いられstringの文字数(長さ)を返します。
文字を切り取る場合は、左からなら Left(string, length) で指定文字数(length)分の文字列が返されます。
その他にも Right()やMid() などがあります。
さて、ご質問文ですと、データは「,」区切りで解釈できるようですので…
Split(string, ",")
を利用すれば、「,」で区切られた1次元配列が返されますので、そちらを利用したほうが便利かもしれませんね。
No1さんのところでも書きましたが、配列処理を考慮すればよかったのですね。
急ぎのデータ処理だったため焦って頭から抜けていました。
お手数おかけしました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) VBAマクロ 決まっていない行を選択して別シートへ貼付け 4 2023/02/16 16:08
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで数値を全角文字(カ...
-
CSVファイルの中で、「 , 」カ...
-
Delphi6 Delimiterの使い方
-
JPY ¥1,500.00は日本円でお幾ら?
-
3桁ごと?4桁ごと?コンマの...
-
エクセルのセルごとに貼り付け...
-
あいうえおかきくけこ
-
Excelについて質問です。 セル...
-
gooの参考urlに2つのサイトを
-
テキストファイル内の「誤改行...
-
Excel 住所の分割(文字数制限...
-
【Excel VBA】カンマ毎にデータ...
-
C#でcsvファイルの列を入れ替え...
-
C#で、テキストボックスの入力...
-
参考URL、複数つけたい場合は・...
-
ACCESSの表で罫線を使うと縦方...
-
memcmpでの・・
-
[VBA][Excel]クリップボードか...
-
VBAでtxtファイルを読み込む際...
-
CSVの定義
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
EXCELからCSVにすると余計なカ...
-
マクロを使ってフォルダー内に...
-
WORDで改ページすると時々グレ...
-
CSVの定義
-
Excelについて質問です。 セル...
-
カンマ区切り
-
VBAでtxtファイルを読み込む際...
-
[VBA][Excel]クリップボードか...
-
カンマ区切りの数字をCSVフ...
-
C#で、テキストボックスの入力...
-
データにカンマが入ったCSVデー...
-
パス区切りの文字について
-
メモ帳からエクセルにセル区切...
-
エクセルにペーストする際にカ...
-
JPY ¥1,500.00は日本円でお幾ら?
-
区切り文字をTABにしたい
-
PHP カンマをエスケープしたい...
-
(エクセル)特定のスペースを...
おすすめ情報