• ベストアンサー

VBAで関数が記載されたセルを見つける

Excel2002です。 ある列(約70)の値を消して空白にするという処理をしたいのですが、 その列に関数が記述されているセルとただの数値が記載されているセル、空白のセル の3種類が混在しており、関数が記述されているセルは、空白にせずに残す。 ということをしたいと思います。 関数が記載されている・・・ということを区別するやり方がわかりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

If cl.HasFormula Thenです。 ーー 下記を実行すればZ列に、セルの番地と式の内容とが出ます。 Sub test01() Dim cl As Range k = 1 For Each cl In Selection If cl.HasFormula Then Cells(k, "Z") = cl.Address & " " & cl.Formula k = k + 1 End If Next End Sub を実行してください。 ーー 式のないセルは Sub test01() Dim cl As Range k = 1 For Each cl In Selection If cl.HasFormula Then Cells(k, "Z") = cl.Address & " " & cl.Formula k = k + 1 End If Next End Sub

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

#2です。書き漏らしましたが、 実行する前に対象とするセル範囲を範囲指定して、やってください。 固定するなら For Each cl In Selection を For Each cl In Range("A1:H30")などとしてください。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

記録マクロで下記の操作を記録すれば良いでしょう。 ---------------------------------------------- メニュー[編集]-[ジャンプ]をクリック  ↓ [ジャンプ]ダイアログ-[セル選択]ボタンをクリック  ↓ [選択オプション]ダイアログ-[定数]オプションをクリック  ↓ [数値]チェックだけをOnにして、[文字][論理値][エラー値]チェックをOffに  ↓ [選択オプション]ダイアログ-[OK]ボタンをクリック  ↓ 数値だけが選択されていることを確認して[Delete]キーを押す ------------------------------------------------ 記録されたマクロを簡単にすると下記の通り。 Cells.SpecialCells(xlCellTypeConstants).ClearContents

関連するQ&A

  • Excel2002でセルへの数値代入

    使用しているのはExcel2002なんですが 関数などを使用して空白セルへ数値及び文字列を 代入することって可能でしょうか? 例を挙げると、 セルA1に7という値を入力すると、 セルC1にある関数が「10-A1」という計算を行って セルB1に3という値を返すようにしたいのです。 また、セルB1に4という値を入力すると、 セルC1で計算を行い、セルA1には6が返る。 このようにセルA1、B1ともに、人の手で数値の 入力が行われる可能性があるので、表示部分のセルに 関数式を記述せず、空白としておく。 C1に入力する関数は IF(B1="",10-A1,10-B1) として、この結果を、またIFなどを使って 空白の方のセルに入力してあげればいいかなー というところまでは考え付いたのですが・・・ どなたか教えてください。

  • EXCEL関数 数値セルが何個下に出てくるか?

    EXCEL関数で質問です。 A1:A5セルそれぞれに、文字列、空白、数値のいずれかが入っています。 そのうち数値のセルが最初に出てくるのは上から何番目か、というのを B1セルに関数で表示したいのです。 たとえば、A列上から、 あ、A、100、100、0 なら3、 愛、(空白)、百、8、ZZZ なら4 という具合です。 お知恵をお貸しください!

  • 関数の結果を""ではなく設定されていないセルにしたい

    EXCEL2000を使用してます。Sheet1シートのA列のセルには、値(文字数値)が設定してあって、B列のセルで以下のような関数を設定してあります。 たとえばB10セルの場合、 =IF(A10="","",T("2"&TEXT($B10,"0000")) A列に何も値がない場合、B列には何も表示されないのですが、Sheet1をSheet2へ「形式を選択して貼付け」→「値」をした場合、B列に""が結果として設定されたセルに何かの値が残っているようです。(A列は改行等の制御文字はありません。)CSVファイルに出力してテキストエディタで参照すると半角スペースのように見えます。貼付け時に「空白を無視する」をチェックしても何かの値がセルに残っているようです。Sheet2にコピーしたときに関数で設定されたセルを何も入力されていないセルにする方法をご教授願います。

  • LARGE関数で空白セル数だけ飛ばして記入したい。

    LARGE関数で空白セル数だけ飛ばして記入したい。 たとえばA列に連続する数値がランダムに入力されていて、その値の高い値から、LARGE関数で順番をB列に記入しました。しかしA列に空白セルがある場合、空白セル数だけ高い値を飛ばして順番をつけたいのですが、良い方法は御座いませんでしょうか? 例 A列に1から15までランダム記入されていて空白セルが2つあれば13から1、2としていきたいのです。 B1=IF($A$1:$A$15="","",LARGE($A$1:$A$15,A1))↓ と記入すると15、14がエラー表示になって 13から1になってしまいます。それを、13から1、2としていきたいです。 お願いします。

  • エクセル2010で二つのセルを一つにまとめる関数

    エクセル2010を使っています。 二つのセルに入っているそれぞれの数値を、1つのセルに文字のようにまとめたいです。 例えば、 B2に3、C2に4、なら、D2に34、です。 ただ、 B3に数値が入っていて(例えば5)、C3が空白なら、D3は、B3の数値(5) としたいです。 これらの条件を満たす、D列にいれる関数を教えてください。 どうぞよろしくお願いします。

  • EXCEL関数で指定セルに入力方法

    EXCEL関数で指定したセルに別のセルの値をコピーしたり、そのまま入力した数値が自動的に指定したセルに書き込まれる(リンクは張らずに)といった関数はないのでしょうか?マクロ処理であれば簡単のですが、マクロ無しで使いたいとおもいまして。

  • Excel関数について

    Excel関数について質問です。 以下の二つ (1) 下のように、セルA1から入力されてるものを、1、2、3・・と数字順に並び替える良い方法はありますでしょうか。 A-1 A-10 A-10A A-100 A-2 A-20 A-22.5 ・ ・ A-555 ・ ・ (2) 一行目と二行目に値の入ったセルと空白セルが混在しています。どちらも同じものに対する値の為、一行目にまとめようと、一行目の空白セルに二行目のセル(下)に値がある場合はその値を返し、空白の場合は空白のままにするというIF関数を使いましたがうまくいきませんでした。三行目と四行目、五行目と六行目・・とかなりあります。良い方法を教えていただけますでしょうか。 よろしくお願いいたします。

  • Excel 2003 プルダウンでセル色変え

    Excel2003で、8種類の条件により列の色変え処理をしたいのです。 A列は、入力規則のドロップダウン リストにより入力します。 A列に入力されたことにより、B列からF列まで別シートからVLOOKUP関数によりデータが入ります。 B列は、1~8の数値データです。 B列の1~8の数値データにより、A列~F列まてのセルを色変えしたいと考えてます。 マクロとしては、どのように記述したら良いでしょか? ご教授ください。

  • Excel VBA セルの値を変更後にVBA作動

    Excel VBAを活用して、特定のセルの値が変更されたときに、VBA処理を発動させることになりました。 処理といたしましては、C列(3列目)の4行目以下の空白セルに数値を入力するか、セルに入力されている数値を変更した場合にVBAを発動させたいです。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 3 And Target.Row >= 4 Then MsgBox "セルの値が更新されました" End If End Sub 上記のコードを実行してみたところ、3列目(C列)の4行目を選択した段階でVBAが作動してしまいます。 セルの値変更後に作動するようにするには、どう修正すればよろしいでしょうか?

  • VBAで特定の条件だったらセル番地を記載

    VBAでセルの値を見て、特定の条件だったらそのセル番地を記載したい。 以下のようになっているデータがあります。 0 0 0 0 35351←●1ブロック目の始まりのセル 319241 2412 421414 351315←●1ブロック目の終わりのセル 0 0 0 0 0 43624←■2ブロック目の始まりのセル 3252 53252 452←■2ブロック目の終わりのセル 0 0 0 0が入っている行が数行あった後、数値が入っている行が数行続き、また0が入っている行、0より大きい数値が入っている行、と繰り返されているデータがあります。 0が入っている行数、0より大きい数値が入っている行数は固定ではありません。 0より大きい数値が入っている数行のデータを1ブロックとします。 1つのシートでのブロック数も固定ではありません。 データ行は4098行までで固定です。 このようなデータの1ブロックごとの始まりのセル番地と終わりのセル番地を出し、シートに記載したいです。 考えたのは2行ずつセルの値を見て、0と0より大きい数値の並びになっていればブロック始まりのセル番地として記載し、より大きい数値と0という並びになっていればブロック終わりのセル番地として記載するという方法です。 もっと単純な処理で済むようなものがあれば教えていただきたいです。