電子書籍の厳選無料作品が豊富!

エクセルで、(例えば)A列のセル内改行されたデータを「CLEAN関数」でB列に表示させたい時、A列に入っている分のデータだけを隣のB列に表示させる場合のマクロの記述式を教えて下さい。セルA1「あああ 改行 いいい」→B1「あああいいい」、セルA2「ううう 改行 えええ」→B2「うううえええ」、セルA3「データなし」→B3「表示なし」  イメージご理解して頂けたでしょうか?要するにA列に入ってるセルのデータのみをCLEAN関数でB列に表示させ、A列に入ってない場合はCLEAN関数を適用しない場合の記述式です。どうか宜しくお願いします。

A 回答 (3件)

ひょっとして、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

です。
    • good
    • 0
この回答へのお礼

Wendy02さんの方法でできました。ご教授有り難うございました。

お礼日時:2007/05/31 20:10

こんばんは。




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
    • good
    • 1
この回答へのお礼

Wendy02さまの方法で無事にできました。有り難うございました。感謝です!

お礼日時:2007/05/31 20:07

こんばんは。



B1に「=CLEAN(A1)」を入力し、以下必要な行数分コピーしてください。

セルA1「あああ 改行 いいい」→B1「あああいいい」
セルA2「ううう 改行 えええ」→B2「うううえええ」
セルA3「データなし」→B3「表示なし」

になります。
    • good
    • 0
この回答へのお礼

マクロの記述をしたかったものですから、今回はWendy02さんの方法でできました。ご教授有り難うございました。

お礼日時:2007/05/31 20:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!