• 締切済み

CLEAN関数マクロ記述式!

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

みんなの回答

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.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 です。

hanninmae1
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 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

hanninmae1
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。
  • x0000x
  • ベストアンサー率52% (67/127)
回答No.1

こんばんは。 B1に「=CLEAN(A1)」を入力し、以下必要な行数分コピーしてください。 セルA1「あああ 改行 いいい」→B1「あああいいい」 セルA2「ううう 改行 えええ」→B2「うううえええ」 セルA3「データなし」→B3「表示なし」 になります。

hanninmae1
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • RNKU関数をマクロで記述したいのですが?

    RNKU関数をマクロで記述したいのですが? マクロを勉強しようと思いネットや本を見ながら試行錯誤しております。RANK関数と同じことをしようと思い調べながら実行したのですがうまくいきません。型が一致しませんと出るのですが、ヘルプを見ても良く分からなかったので、だれか教えて頂けませんでしょうか。 Sub Macro1() Range("A1:A17").Select For Each r In Selection Range("B1:B17") = Application.WorksheetFunction.Rank(r, Selection, 1) Next r End Sub A列の順位をB列に表示しようとしました。

  • エクセルの関数とマクロについて

    (1)のお願い! 例えば関数で =COUNTIF(A1:A10,"*") と記述すれば「A1:A10のセル範囲に文字列のセルは何個あるか」ということですが、これをマクロではどのように記述しますか?教えて下さい。 (2)のお願い! マクロを本格的に勉強したいのですが、関数については理解できてますので、関数とマクロの記述の比較が出来れば私にとって非常に便利なのですが、そのような事を記載した書籍やWebサイトはないものでしょうか?

  • セル内の2行をそれぞれ別のセルにコピーするマクロ

    A列にデータが入力されていたとします。 そのデータのうち、複数のセルで改行されて2行になっています。 改行されているセルをサーチし、1行目をB列のセルに、2行目をC列のセルに分割してコピーしたいと思います。 この様な方法は、マクロで可能でしょうか。 適切な関数があれば、ご教授いただきたいと思います。

  • マクロ記述の簡略化

    以前 教えていただいた式コピーの マクロについてなのですが A1にデータがあり B1に式があって その式をA列のデータがある部分までBにコピーするという 内容で教えていただきました。 これで同様にC1にも式があり その式をA列のデータがある部分までCにコピーするという 内容を付け加えたのですが とりあえずまったく同じマクロを記入して 変数を変えてB1部分の記述をCIに置き換えて ・・・という方法でしましたところ 当然ばっちり動くのですが なんせ同じ記述を2回しているので 見にくくなっていたり動作が遅くなりそうで もっとすっきりした記述があればと思っています。 なにか良い方法ありましたら御教授願います。 私に応用力がないものでお手数おかけいたします。 参照URLのfreezemoon様から教えていただいた マクロについてです。 http://okweb.jp/kotaeru.php3?q=936658

  • Excelの関数またはマクロを教えて下さい。

    Exsel2000の関数で、現在以下の関数まで出来たのですが、これを応用して検索値「A1」を2つのセル「A1&B1」にしたいのですが、どうすればよいのでしょうか?どなたか方法を教えて下さい。 =VLOOKUP(A1,Sheet1!$A$1:$E$2000,4) 上記の関数から判るように、これは 例えばSheet2のC1のセルにこの式を入れる場合、A1と同じ内容の値を、Sheet1のA列から検索して、そして同じ行のSheet1のD列の値をSheet2のC1のセルに返すという関数です。 これを応用して、「A1と同じ内容…のA1を、A1&B1の2つが一致するセルを検索して、同じ列のSheet1のD列の値をSheet2のC1のセルに返すという関数にしたいのです。 どなたかおわかりになる方がおりました宜しくお願いいたします。 また、マクロを使う方法でも良いのですが、当方マクロは詳しくないので出来るだけ判りやすくお願いいたします。

  • 《エクセル》 マクロ-セルの範囲指定の式

    いつもお世話になります。 2つお聞きしたいのですが、エクセルで、 ・「A列のデータのあるセル範囲のみを指定する」と、 ・「A列のデータのあるセル範囲の、隣(B列)のセルを指定する」 というマクロの式はどのように書けば良いのでしょうか。

  • エクセルでマクロを作りたいのですが上手くいきません

    エクセルで会社で使うファイルを作成していますが、ファイルサイズが大きくなりすぎたので、こういうマクロが作れないかと調べていたのですが、やり方がわからないので困っています。 わからないのは、入力シートのA列にデータを入力して、シート2のB列に自動的に表示する ことを自動的にやってくれるマクロです。 今はIF関数をシート2に入力している状態ですが、セルに関数を入れる方法だとファイルサイズが大きくなりすぎてしまいます。 (IF関数をあらかじめ入力しておくセル数がとてもたくさんある為) なお、入力シートA列がブランクの場合は、シート2のB列には何も表示されないようにしたいです。 大変困っております。よろしくお願いします。 

  • 可視セルを関数に組み込むマクロ

    Z列に関数を入力するマクロを組みたいです。 最初に、A-D列のみ表示し、E-Y列はグループ化して非表示にしており、 A、B、C、D、Z 列のみ表示されています。 セルZ1に、A1、B1を引数とする関数を入力します。 次に、グループ化を解除し、E-H列のみ表示し、A-D列、I-Y列をグループ化して非表示にし、 E、F、G、H、Z列のみ表示します。 マクロを実行すると、セルZ1に、E1、F1を引数とする関数が入力されるようにしたいです。 グループ化は4列ずつ行い、画面に表示されるのは常に5列のみで、 Z列には、「表示されている第1列と第2列」のセルを引数とする関数を入力するように したいのです。 Z列から見て、表示されている列が変わっていくため、RC形式のセルの単純な相対表示では あらわせません。 よろしくお願いいたします。

  • Excel2000マクロ記述について

    下記の条件で下記のようなマスターを参照してマクロを作成したいのですが、どのように記述したら良いでしょうか シート名 滞留在庫表 条件 c列の5行目からdataが入っています。data例(AD1200S0110000000P)18桁 dataの頭8桁目がBの場合はL221をV列に表示 dataの頭8桁目が、A又はM又Pの場合はL222をV列に表示 dataの頭8桁目がB、A、M、P以外の場合は、ブランクをV列に表示 シート名 表示再設定マスタ             A列    B列 5行目****************** 6行目*******B********** L221 7行目*******A********** L222 8行目*******M********** L222 9行目*******P********** L222

  • Hyperlink関数をクリックしてくれるマクロ

    どなたか詳しい方教えていただけないでしょうか? ExcelのセルA1に以下のhyperlink関数を入れています。 =HYPERLINK(″#C″&MATCH(B1,C:C),″クリック″) 隣のB1に入れた数字を元にC列に存在する同じ数字先にジャンプするように関数を作ってます。 A1にできたリンクをクリックしたは、B1に入力されているものと同じ数字先のC列に飛ぶようにマクロを組みたいのですが、どうしたらいいでしょうか? ハイパーリンク関数がマクロに組み込めないのと色々調べてみましたがうまくいかないのでお手上げです。 どなたか詳しい方教えていただければと思います。 どうぞよろしくお願いします!

専門家に質問してみよう