- 締切済み
CLEAN関数マクロ記述式!
エクセルで、(例えば)A列のセル内改行されたデータを「CLEAN関数」でB列に表示させたい時、A列に入っている分のデータだけを隣のB列に表示させる場合のマクロの記述式を教えて下さい。セルA1「あああ 改行 いいい」→B1「あああいいい」、セルA2「ううう 改行 えええ」→B2「うううえええ」、セルA3「データなし」→B3「表示なし」 イメージご理解して頂けたでしょうか?要するにA列に入ってるセルのデータのみをCLEAN関数でB列に表示させ、A列に入ってない場合はCLEAN関数を適用しない場合の記述式です。どうか宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- merlionXX
- ベストアンサー率48% (1930/4007)
ひょっとして、B列にCLEAN関数を入れることをマクロでやるということでしょうか? A列にデータが入っているときのみ、B列に関数をいれるなら、 Sub test01() Dim x As Long Dim c As Range With ActiveSheet x = .Cells(.Rows.Count, "A").End(xlUp).Row For Each c In .Range(.Cells(1, "A"), .Cells(x, "A")) If c <> "" Then c.Offset(0, 1).FormulaR1C1 = "=CLEAN(RC[-1])" Next End With End Sub ただ、CLEAN関数は、対象セルが空白なら、何も表示しませんから全部に関数を入れてしまっても同じだと思います。その場合は、 Sub test02() Dim x As Long With ActiveSheet x = .Cells(.Rows.Count, "A").End(xlUp).Row .Range(.Cells(1, "B"), .Cells(x, "B")).FormulaR1C1 = "=CLEAN(RC[-1])" End With End Sub です。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 Clean 関数というのは、昔、表計算は、倍角、改ページなどの印刷用の制御コードを入れることが出来ました。その時に、そうしたコードを除去するために使われたものなのです。 あえて、マクロの勉強というのでしたら、このようになります。 >A列に入ってない場合はCLEAN関数を適用しない これは、たぶん、そのまま通ると思います。 VBAでは、Replace という関数を使いますが、Clean関数でも、とおります。 Sub MacroTest() Dim i For i = 1 To Range("A65536").End(xlUp).Row 'Cells(i, 2).Value = WorksheetFunction.Clean(Cells(i, 1).Value) Cells(i, 2).Value = Replace$(Cells(i, 1).Value, vbLf, "") Next i End Sub
お礼
Wendy02さまの方法で無事にできました。有り難うございました。感謝です!
- x0000x
- ベストアンサー率52% (67/127)
こんばんは。 B1に「=CLEAN(A1)」を入力し、以下必要な行数分コピーしてください。 セルA1「あああ 改行 いいい」→B1「あああいいい」 セルA2「ううう 改行 えええ」→B2「うううえええ」 セルA3「データなし」→B3「表示なし」 になります。
お礼
マクロの記述をしたかったものですから、今回はWendy02さんの方法でできました。ご教授有り難うございました。
お礼
Wendy02さんの方法でできました。ご教授有り難うございました。