Sub 分けてソートして貼り付ける()
Dim srcSheet As Worksheet
Dim destSheet As Worksheet
Dim lastRow As Long
Dim srcData As String
Dim dataArray() As String
' Sheet1を参照
Set srcSheet = ThisWorkbook.Sheets("Sheet1")
' Sheet2を参照
Set destSheet = ThisWorkbook.Sheets("Sheet2")
' Sheet1の最終行を取得
lastRow = srcSheet.Cells(srcSheet.Rows.Count, "A").End(xlUp).Row
' Sheet1のA列をソート
srcSheet.Range("A1:A" & lastRow).Sort Key1:=srcSheet.Range("A1"), Order1:=xlAscending, Header:=xlNo
' A列のすべてのセルに対して処理を行う
For i = 1 To lastRow
' A列のデータを取得
srcData = srcSheet.Cells(i, 1).Value
' データを「_」を基準に分ける
dataArray = Split(srcData, "_")
' 分けたデータをSheet2のA2セル、B2セル、C2セルに貼り付ける
destSheet.Cells(i + 1, 1).Value = dataArray(0)
destSheet.Cells(i + 1, 2).Value = dataArray(1)
destSheet.Cells(i + 1, 3).Value = dataArray(2)
' 拡張子を削除
Dim lastDotIndex As Long
lastDotIndex = InStrRev(dataArray(2), ".")
If lastDotIndex > 0 Then
dataArray(2) = Left(dataArray(2), lastDotIndex - 1)
destSheet.Cells(i + 1, 3).Value = dataArray(2)
End If
Next i
End Sub
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
>dataArray = Split(srcData, "_")
セルデータが空白でもインデックス0の値は "" になるので(0)がエラーになる事はないかなと。
(1)以上はあり得ますけど。
No.4
- 回答日時:
#2です。
(これは関係なかったのかも)空白セルでエラーになるのは多分 dataArray(2) この絡みであって、
>destSheet.Cells(i + 1, 1).Value = dataArray(0)
ここでは出ないと思いますよ。
Split した後で困るのはインデックス1以上の部分でしょうから。
検証:
Sub aaa()
Dim r As Range
Dim dataArray() As String
For Each r In Range("A1:A5")
dataArray = Split(r.Value, "_")
r.Range("C1:E1").Value = dataArray
Next
End Sub
エラー名称が出ているならその内容を記載された方が。
或いは綴りミスとかスペースが半角ではなく全角とか?
No.3
- 回答日時:
Sheet1ですが
A1~Aの最終行の間に空白のセルがありませんか。
空白のセルがあると、エラーが発生します。
添付図のA4のセルです。
最終行はA6とします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Excel VBA】指定行以降をクリ...
-
ExcelVBAを使って、値...
-
Excelで指定した日付から過去の...
-
特定のセルが空白だったら、そ...
-
EXCELで変数をペーストしたい
-
【Excel】指定したセルの名前で...
-
ExcelのVBAで数字と文字列をマ...
-
i=cells(Rows.Count, 1)とi=cel...
-
screenupdatingが機能しなくて...
-
Excel VBA、 別ブックの最終行...
-
Excel vbaで特定の文字以外が入...
-
【VBA】指定したセルと同じ値で...
-
EXCEL VBA 画面のロックについて
-
実行時エラー438 オブジェクト...
-
台形面積計算式の表示等
-
DataGridViewの各セル幅を自由...
-
セル色なしの行一括削除
-
Excle VBA Findメソッドについて
-
TODAY()で設定したセルの日付...
-
VBA実行後に元のセルに戻りたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel VBA】指定行以降をクリ...
-
Excelで指定した日付から過去の...
-
【Excel】指定したセルの名前で...
-
Excel vbaで特定の文字以外が入...
-
特定の文字を条件に行挿入とそ...
-
TODAY()で設定したセルの日付...
-
screenupdatingが機能しなくて...
-
Excelのプルダウンで2列分の情...
-
EXCELで変数をペーストしたい
-
連続する複数のセル値がすべて0...
-
Excel VBA、 別ブックの最終行...
-
VBAを使用した時間管理
-
エクセルVBAでコピーして順...
-
セル色なしの行一括削除
-
【EXCEL VBA】Range("A:A").Fi...
-
VBA コピーして次の値まで貼り...
-
VBA初心者です。結合セルを保持...
おすすめ情報