
No.3ベストアンサー
- 回答日時:
こんにちは、
一例です。
標準モジュールで
Sub Sample()
Dim i As Long, j As Long, n As Long
Dim tmp, arrStr()
For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
If Cells(i, "A") <> "" Then
tmp = Split(Cells(i, "A"), vbLf)
For j = 0 To UBound(tmp)
ReDim Preserve arrStr(n)
arrStr(n) = tmp(j)
n = n + 1
Next
Else
n = n + 1
End If
Next
'B列に書き出しています。 変更してくださいね
Cells(1, "B").Resize(n).Value = Application.Transpose(arrStr)
End Sub
この回答へのお礼
お礼日時:2020/06/15 17:53
ありがとうございます。希望する通りの処理になりました!
シンプルで初心者にもわかりやすくとても勉強になったので、こちらをベストアンサーに選ばせていただきました。
No.4
- 回答日時:
こんにちは
すでに回答は出ていますので、ご参考までに。
Sub Sample()
Dim r As Range, s
Set r = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
s = Split(Join(Application.Transpose(r.Value), vbLf), vbLf)
'A列に上書きする場合はB1→A1に
Range("B1").Resize(UBound(s) + 1) = Application.Transpose(s)
End Sub
No.2
- 回答日時:
すみません、motoSheet、sakiSheet、i の変数宣言が抜けてました。
Sub Macro1()
Dim motoSheet As Worksheet
Dim sakiSheet As Worksheet
Set motoSheet = Worksheets("Sheet1")
Set sakiSheet = Worksheets("Sheet2")
Dim motoRow As Integer
Dim sakiRow As Integer
Dim workStr As String
Dim workArray() As String
Dim checkRow As Integer
Dim i As Integer
motoRow = 1
sakiRow = 1
checkRow = 0
Do
workStr = motoSheet.Range("A" & motoRow).Value
If workStr <> "" Then
workArray = Split(workStr, vbLf) '改行文字で分割
For i = 0 To UBound(workArray)
sakiSheet.Range("A" & sakiRow).Value = workArray(i)
sakiRow = sakiRow + 1
Next i
Else
If checkRow > 10 Then '空白が10件続いたら終了
Exit Do
End If
checkRow = checkRow + 1
sakiRow = sakiRow + 1 '何も出力しないで次に移動
End If
motoRow = motoRow + 1
Loop
'後処理
Set sakiSheet = Nothing
Set motoSheet = Nothing
End Sub
No.1
- 回答日時:
こんな感じでしょうか。
Sub Macro1()
Set motoSheet = Worksheets("Sheet1")
Set sakiSheet = Worksheets("Sheet2")
Dim motoRow As Integer
Dim sakiRow As Integer
Dim workStr As String
Dim workArray() As String
Dim checkRow As Integer
motoRow = 1
sakiRow = 1
checkRow = 0
Do
workStr = motoSheet.Range("A" & motoRow).Value
If workStr <> "" Then
workArray = Split(workStr, vbLf) '改行文字で分割
For i = 0 To UBound(workArray)
sakiSheet.Range("A" & sakiRow).Value = workArray(i)
sakiRow = sakiRow + 1
Next i
Else
If checkRow > 10 Then '空白が10件続いたら終了
Exit Do
End If
checkRow = checkRow + 1
sakiRow = sakiRow + 1 '何も出力しないで次に移動
End If
motoRow = motoRow + 1
Loop
'後処理
Set sakiSheet = Nothing
Set motoSheet = Nothing
End Sub
とりあえず、別シートに出力するようにしています。
完了後に元シートが不要だったら、最後に「Sheet1」の削除をしてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【画像あり】オートフィルター...
-
IF関数で空欄("")の時、Null...
-
Excel:関数が入っているセルに...
-
「データ要素を線で結ぶ」がチ...
-
エクセル 連番が途切れていると...
-
エクセルのIF関数で、隣のセル...
-
空白セル内の数式を残したまま...
-
形式貼り付けの「空白を無視す...
-
エクセルで上の行の値を自動的...
-
エクセルでCSVを編集するとき、...
-
【関数】=EXACT(a1,b1) a1とb1...
-
EXCELのオートフィルタで空白セ...
-
範囲内の列から、一番下の数値...
-
色つき行の一括削除は?
-
【Excel】 Ctrl+方向キー で空...
-
Excelで、入力文字の後に自動で...
-
SUMIFS関数で「計算式による空...
-
エクセルで空白文字の前後を入...
-
エクセルで入力すると隣のセル...
-
countaで空白セルもカウントさ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【画像あり】オートフィルター...
-
IF関数で空欄("")の時、Null...
-
エクセルでCSVを編集するとき、...
-
Excel > ピボットテーブル「(空...
-
エクセル 連番が途切れていると...
-
「データ要素を線で結ぶ」がチ...
-
エクセルで入力すると隣のセル...
-
ピボットテーブルで空白セルの...
-
Excel:関数が入っているセルに...
-
Excelで、入力文字の後に自動で...
-
形式貼り付けの「空白を無視す...
-
数式による空白を無視して最終...
-
空白セル内の数式を残したまま...
-
excel2010 空白セルにのみ貼り...
-
関数TRANSPOSEで空白セルを0に...
-
【Excel】 csvの作成時、空白セ...
-
エクセルのIF関数で、隣のセル...
-
エクセル セルのコピー元が空...
-
エクセルで、「複数のセルの中...
-
エクセルで上の行の値を自動的...
おすすめ情報