VBAを使って選択範囲の数式を置き換える方法

このQ&Aのポイント
  • エクセル2007での数値入力方法を効率化するために、VBAを使用して手動で選択した範囲の数式を置き換える方法を紹介します。
  • 手動で入力した数値や式を効率的に計算するためには、VBAを活用することが有効です。本記事では、VBAを使って選択範囲の数式を一括で置き換える方法について解説します。
  • VBAを使用して、エクセルの選択範囲内の数式を一括で置き換える方法について説明します。手動で数値入力をする際の効率を向上させたい場合には、本記事の手順を参考にしてください。
回答を見る
  • ベストアンサー

VBAを用いて手動で選択した範囲の数式の置き換え

エクセル2007にて手動で数値入力をしています。 効率の悪い方法なのですが、 入力方法自体はこのまま、変えずにやりたいと思っています。 入力内容は、例えば 100x20ほどのセルのあるところ、空白のところに「2」と入れたり しばらく後に先ほどの「2」のところに「=2+4」と付け足したり さらにしばらく後に「=2+4+5」と付け足したりしています。 「したいこと」はある程度入力が進んだところで、 100x20ほどのセルを「マウスなどで選択」し、その選択した範囲のセルの中身の 「=2+4+5」のセルを計算し「=11」に置き換え、(左に”=”を付けたい) 「3」や「=3」「=+3」のセルを「=3」に置き換え、(やはり左に”=”を付けたい) ただし「空白」のセルは「空白」のままにして置きたいのです。 Q1)上記の「したいこと」をVBAでできるでしょうか Q2)Q1に加えて 「0」のセルは「=0」と置き換えられるでしょうか Q3)間違ってイコール無しで入力した「1+2+3」も計算して「=6」(左に”=”)にできるでしょうか Q4)VBAで実際に動くものを組んでもらえないでしょうか 後々、最終的には自分で勉強してVBAを組めるようになりたいのですが 今必要なのは上記の操作のみなので、実際にVBAで作成したものが欲しいです。 現在はマウスで選択、形式選択(値)貼り付けして、手動でその都度”=”を付け足しています

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

Sub macro1()  Dim h As Range  Dim Target As Range  On Error Resume Next  Set Target = Selection.SpecialCells(xlCellTypeConstants, xlNumbers)  If Target Is Nothing Then  Set Target = Selection.SpecialCells(xlCellTypeFormulas, xlNumbers)  Else  Set Target = Union(Target, Selection.SpecialCells(xlCellTypeFormulas))  End If  For Each h In Target   h.Formula = "=" & Application.Evaluate(h.Formula)  Next End Sub 簡易版です。なので,ご質問で明記されていない入力内容が選択範囲内にあった場合は,意図しない結果となるかもしれません。 駄目な例: ="a" と記入されていた場合など。

Boogie-Pop
質問者

お礼

ありがとうございました。 自分で勉強してちょこっと書き足して完全版ができそうです。

その他の回答 (3)

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

多分質問者のやろうとしていることは、数を数式にVBAで変化させ、入力待ちにして、何かの数を人間の入力で入れて計算(質問では加減どまりらしい)をしたい。 初心者の考えそうな珍奇な方法だな。 >100x20ほどのセルのうち、 質問の操作の対象セルはどうなるを書かないと質問にならないのでは。 そのセルを選択(決める)条件は何なのか。質問者の(総合的?)判断で無いと判ら無いのか? ーー 質問の主旨を間違えていなければ、私の思いついた「珍奇な」方法 (1)テキストボックスを1つシートに設ける (2)シートのSelection_Changeイベントに Private Sub Worksheet_SelectionChange(ByVal Target As Range) ActiveCell.Formula = "=" & Val(Target.Value) & "+" & Val(TextBox1.Text) End Sub 判らなければGoogleで「Worksheet_SelectionChange」で照会し勉強のこと。 === テキストボックスに、加える数を入力。毎セルに置いて、先に行うこと(忘れやすいから注意)。引き算したい場合はマイナスをつけて入力。 シートのセルをクリック そのセルの値にテキストボックスの値を加えた数をそのセルに設定(自動計算)。 空白のセルは0の扱い。テキストボックスも空白は0の扱い。 ーー 数式バーへのVBAによる入力のコントロールの方法が判らない(高等技術?API?)ので上記で辛抱。

Boogie-Pop
質問者

お礼

回答ありがとうございました。 自分の説明が悪くてわかりづらくてすいませんでした。 自分でも今の入力の方法がアナログな効率の悪いものだと自覚しており、 今回の回答を参考に勉強させていただきます。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! 一例です。 範囲指定した後にマクロを実行してみてください。 Sub test() Dim c As Range For Each c In Selection If c <> "" And IsNumeric(c) Then c = "=" & c End If Next c End Sub こんな感じではどうでしょうか?m(__)m

Boogie-Pop
質問者

お礼

ありがとうございました。 シンプルな書き方もあるんですね

  • silverfd
  • ベストアンサー率57% (204/356)
回答No.1

これでできましたよ。 Sub sanple() Dim i As Range ActiveSheet.UsedRange.Select For Each i In Selection i.Value = "=" & i Next i End Sub

Boogie-Pop
質問者

お礼

早速の回答ありがとうございました。 自宅のPCのエクセル2002(?)では動作が違うという新たな発見もありました。 参考にして勉強します。

関連するQ&A

  • VBAで選択範囲の全てのセルの削除の仕方

    ご教授お願いいたします。 Excel2007のVBAでseetに挿入したボタンのマクロで マウスで選択した全てのセルを削除するようにしたいのですが・・・ ActiveCell.Delete と入力してマクロを実行してもマウスで選択したセルの 一つ目のセルしか削除されません・・・ 選択したすべてのセルに適用するようにするためには どのようなメソッドを使えば良いのでしょうか? 使い始めたばかりなので全くわかりません・・・ よろしくお願いいたします。

  • EXCEL VBA 空白行を含んだ範囲選択

    EXCEL VBA超初心者です。 EXCELのVBAについての質問です。 以下のような、日ごとのお金の貸付、返済の一覧データがあります。 例 A B C D E 1 年  月 日 貸付  返済 2 2008 5 10 10000 3 2008 6 10      8000 4 2008 7 10 20000 5 2008 8 20      7000 ・データの行数は決まっていません。 ・最後の行が「貸付」で終わることもありますし 例のように「入金」で終わることもあります。 ・各データには必ず「年」「月」「日」が入力してあります。 VBAで、A2セルからE5セルを範囲選択するには どのように記述したらいいですか? ちなみに自分で色々と調べてみて Selection.SpecialCells(xlCellTypeConstants, 23).Select としたのですが それだと空白セル(例でいうとE2やD3セル)が選択されず とびとびになってしまいました。 ご教授お願いいたします!

  • VBA (条件付セルの選択、貼り付け)

    よろしくお願いします。 下記のような処理を大量データに対して行うVBAを書きたいのですが、なかなか上手くできません。 手順としては、 (1)空白セルを選択肢する。 (2)1つ上のセルを選択する (3)空白セルに貼り付ける。 (4)繰り返す。 だとおもうのですが、なかなか上手くVBAが書けません。  A          A 12003     12003 2         22003 3         32003 42005 ⇒   42005 5         52005 6         62005 7         72005 81999     81999 :         : :         :        よろしくお願いします。

  • 関数の選択範囲の指定方法

    例えば、sum関数で、かなり広い範囲のセルの数字の合計を計算しようとしているとします。 この時のセル範囲の指定方法についての質問です。 関数ではなくて、通常のセル選択の場合、「Ctrl」キーと「Shift」キーを押しながら、矢印キーを押すと、文字が入力されている範囲の端から端までが選択できます。 このような方法を関数のセル廃位の選択でもやってみたいと考えています。 なお、計算するデータは空白行、または、空白列で区切られているとします。 よろしくお願いします。

  • マクロを使って範囲選択したい

     エクセルのセルにランダムに入力されたデータについて、データが入力されたセル(データが入っていない空白部分も含めて)全てを範囲選択したいのですが、マクロを利用してできますでしょうか。  その後、コピーペーストする予定なのですが、シート全体を選択する方法は駄目です。あと、空白セルも存在するので、入力された1つのセルを選択して、ctrl+Shift+*も駄目です。  もともとのデータは、OCRソフトで読み込こんだデータをエクセルにしたものなので、基本ぐちゃぐちゃにデータが入力された状態になっています。  わかりずらい質問かもしれませんが、回答願います。

  • エクセルVBA・セルを選択して並べ替えたい

    エクセルVBA・セルを選択して並べ替えたい 以下の質問では、たいへんお世話になりありがとうございました。 http://okwave.jp/qa/q6203452.html 少し関連した質問をいたします。 具体的に言いますと、マウスでセル範囲を選択して、その選択した範囲を並べ替える、というようなイメージです。(マウスでセル範囲を選択してから、マクロを実行します) 以下のコードで言うと Range("○●:○●").の部分が、マウスで選択した範囲というような具合です。 Sub sort1() Range("○●:○●").Sort _ Key1:=Range("d1"), _ Order1:=xlDescending, _ Header:=xlYes, _ Orientation:=xlTopToBottom End Sub 以上、よろしくご教示お願いします。

  • Excel2013 数式の範囲が選択されない

    Excel2013です 数式を入力したセルをダブルクリックしても 数式の範囲が選択されない 選択されない原因とExcel2010までと同じように範囲を選択する方法を 教えてください 画像左は、Excel2013 A5をダブルクリックしてもSUMの範囲のA2:A4が 選択されない右は、Excel2010 A5をダブルクリックするとSUMの範囲のA2:A4が 青い線で囲まれ選択される。

  • 連続データの計算式かVBAの質問

    お世話になります。 セルC1には年月(2013年11月など)と入力されています。 そしてセルB9~B39には数字の連続データ(1~31)が入力されています。 (1)C1のセルを次の月に変換した場合、B9~B39のデータを連続データの続き(32~)に自動変換する計算式やVBAは、どの様に組めば宜しいでしょうか? (2)そして、B9~B39どこかのセルを空白にした場合、空白にしたセル以降のセルも同様に空白に自動変換する計算式やVBAも分かりません。 (3)(2)で空白になったセルのどれかに「1」と再び入力したら、1を入力したセル以降が再び連続データで自動入力される様にするにはどうすれば良いか分かりません。 ご教授宜しくお願いします。

  • エクセル2003VBAで選択範囲

    いつもお世話になっています。 エクセル2003を使用しております。下記を関数又はVBAの組み方・構文を教えて下さい。 (1)E列には、「1」と「.」と「空白」が入っています(「1」が入ってないケースもあります)が、「1」を検索します。もし「1」が無ければ、J列を同様に検索します。(中身はE列と同じです) (2)「1」が入っているセルから見て、「行」の±10の範囲内を選択し、別シートにコピーする。 例1. 1が入っているセルが、「E15」とします。 この場合、コピーしたい範囲は、5行目全部~25行目全部です。 例2. 1が入っているセルが、「E17」とします。 この場合、コピーしたい範囲は、7行目全部~27行目全部です。 分かりにくいかもしれませんが、よろしくお願いします。

  • 別のexcelのデータをコピペするVBA

    お世話になります。 ExcelファイルのXとYがあります。 Xから、「複数セルを選択」して、Yに「貼付け」する処理の 一部をマクロ(vba)で作成したいと思っております。 具体的ステップとして (1)手動で、Xの任意の連続したセルを選択してコピー (2)Yに移動して、貼り付けしたいセルを選択 (3)(1)で取得したデータをペースト です。 (3)の箇所を「Xのマクロ」を呼び出して実現したいと 思っているのですが、どのようにマクロ(VBA)を記載したら実現できるでしょうか? 本当に勝手で申し訳ございませんが、  ・上記を実現するVBAのコード  ・実際に動作確認されたVBAのコード を教えて頂けないでしょうか? 実は、同じような質問を2回ほどしたのですが、実現できない 回答ばかりでした。 VBAの得意な方、何卒宜しくお願い致します。 ※普通レベルの方は無理と思われますので

専門家に質問してみよう