- 締切済み
エクセル VBA不良率算出について
大変悩んでおり、質問させてもらいました。 内容ですが、エクセルにて不良率を出しているのですが、たまに計算式を消されるトラブルが発生いたしまして、解消にむけVBAにて自動で不良率を出したいと考えております。 不良率を出したいのは2箇所でして。 例としてはセル Dの35に検査数 Dの36に不良数 Dの37に不良率1 続いてYの35に検査数 Zの35に不良数 AAの35に不良率2 以下の条件でマクロ組めませんか アドバイス願います
- kazunoko1689
- お礼率23% (5/21)
- Excel(エクセル)
- 回答数2
- ありがとう数0
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- keithin
- ベストアンサー率66% (5278/7940)
具体的な計算式が不明ですが。 >たまに計算式を消される 手順: シート名タブを右クリック、コードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub Worksheet_Change(byval Target as excel.range) application.enableevents = false if not application.intersect(target, range("D37")) is nothing then range("D37").formula = "=D36/D35" if not application.intersect(target, range("AA35")) is nothing then range("AA35").formula = "=Z35/Y35" application.enableevents = true end sub ファイルメニューから終了してエクセルに戻る D37やAA35に何かされると、自動で復元する。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! >たまに計算式を消されるトラブルが発生いたしまして・・・ 単に数式が入っているセル(D37・AA35)の数式が消えなければ良いのでしょうか? そうであればわざわざVBAにする必要はなく、「シートの保護」ではダメですか? Excel2007以降のバージョンをお使いだとすると まずSheet全体を選択(行番号「1」の上のマスをクリック) → Sheet上で右クリック → セルの書式設定 → 「保護」タブ → 「ロック」のチェックを外しておきます。 次にCtrlキーを押しながら D37セルとAA35セルを選択 → 右クリック → セルの書式設定 → 「保護」タブで 「ロック」にチェックを入れます。 最後にメニュー → 校閲 → シートの保護 → (必要に応じてパスワードを設定) → OK これでD37・AA35セルは編集できなくなりますので、これで用を足すのではないでしょうか? ※ パスワードを設定した場合は忘れないようにしてください。m(_ _)m
関連するQ&A
- EXCELで不良率を出そうと思ってるんですが・・・
まずは下の表を見てください。 │ A │ B │ C │ ────────── 1 │100│ 1 │ │ 2 │ 0│ 2 │ │ 3 │ 0│ 1 │ │ 4 │ 0│ 3 │ │ 5 │ 0│ 2 │ │ 6 │ 30│ 0 │ │ 7 │ 25│ 1 │ │ Aの列は良品の数ですBの列は不良品の数です Cの列に不良率の結果を出そうと思います。 A2,A3,A4,A5が0なのはA1からA5は同じ品物ですが不良の種類が違うので別の行に書かれています。 A1の品物のように不良の種類が5つになることもあるし、A6のように不良が無い事もあれば、A7のように不良の種類が1種類の事もあります。 それぞれの品物ごとに不良率を出したいので、C1からC4は空白でC5に=SUM(B1:B5)/(A1+SUM(B1:B5))の結果が出るようにしたいんです。 そして、C6は不良が無いので空白。C7は=B7/(A7+B7)の計算結果がでるようにしたいのです。 いくら考えてもなかなか うまくいく式が思い浮かびません。 知識のある方、どうぞよろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- 別のexcelのデータをコピペするVBA
お世話になります。 ExcelファイルのXとYがあります。 Xから、「複数セルを選択」して、Yに「貼付け」する処理の 一部をマクロ(vba)で作成したいと思っております。 具体的ステップとして (1)手動で、Xの任意の連続したセルを選択してコピー (2)Yに移動して、貼り付けしたいセルを選択 (3)(1)で取得したデータをペースト です。 (3)の箇所を「Xのマクロ」を呼び出して実現したいと 思っているのですが、どのようにマクロ(VBA)を記載したら実現できるでしょうか? 本当に勝手で申し訳ございませんが、 ・上記を実現するVBAのコード ・実際に動作確認されたVBAのコード を教えて頂けないでしょうか? 実は、同じような質問を2回ほどしたのですが、実現できない 回答ばかりでした。 VBAの得意な方、何卒宜しくお願い致します。 ※普通レベルの方は無理と思われますので
- ベストアンサー
- Visual Basic
- エクセルVBAにて
A1セルに「150」、B1セルに「46」、C1セルに「13」と入っている状態で 下記マクロを実行するとD1セルに計算結果が入るのですが その結果が「1.351999998092651」となります。 電卓で計算すると「1.352」になりますし、セルに計算式を入れた場合でも 同様の結果になるのですが、なぜマクロの場合だけ結果が違うのでしょう? 初歩的な質問なのかもしれませんが、分かる方教えてください。 ※変数に代入しているのは、D1セルで累積結果を求めたいためです。 Sub KEISAN() Dim KEISAN As Single KEISAN = (Cells(1, 1) - Cells(1, 2)) * Cells(1, 3) / 1000 Cells(1, 4) = KEISAN End Sub
- ベストアンサー
- オフィス系ソフト
- Excel2007 VBAで数式がうまく入力が出来ません。
Excel2007 VBAで数式がうまく入力が出来ません。 数式を、"=IF(AA7=0," ---",Z7/AA7)" " "内には半角スペース4コ 半角マイナス3コ と入力したいのですが、以下のように自動的に入力されてしまい、マクロ実行時に、エラーとなってしまい、ストップしてしまいます。 解消方法を教えて下さい。 VBEで入力しても、以下のように自動的に修正されてしまいます。 Range("AB7").Formula = "=IF(AA7=0," - --",Z7/AA7)"
- ベストアンサー
- その他MS Office製品
- エクセルVBAの組み込み方
ブックの再計算時間を短縮させるのを目的としてタイマーを組み込んで再計算時間を検証しようと考えています。 http://msdn.microsoft.com/ja-jp/library/aa730921.aspx に記述されているVBAを組み込もうと思っているのですが、その方法がわかりません。 VBエディターで、挿入-標準モジュール で表示されたウインドウにソースを貼り付け、上書き保存したのですが、ワークシートに戻ってマクロを実行させようと思っても、マクロの一覧にはマクロ名が表示されていません。 どこに誤りがあるのでしょうか。 また、このマクロの使い方はどのようにするのでしょうか。F9を押すたびに再計算時間が表示されるのですか? 以上、よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルの集計計算について教えてください
期間を指定するとデータを引っ張ってきます データは1000~2000件程存在します Aセル=名前 Bセル=略号 Cセル=日時 Dセル=場所 Eセル=不良合計 名前 略号 日時 場所 不良合計 A0001 AA 2014/06/01 00:04:28 1 7 A0010 BB 2014/06/01 00:18:10 2 3 A0011 DD 2014/06/01 00:29:35 4 8 A0001 EE 2014/06/01 00:24:55 2 9 A0005 CC 2014/06/01 00:29:35 3 4 A0010 BB 2014/06/01 00:27:09 2 6 A0020 AA 2014/06/01 00:32:13 1 4 A0001 AA 2014/06/01 00:33:26 3 3 A0020 EE 2014/06/01 00:37:31 5 17 A0016 FF 2014/06/01 00:47:22 6 7 A0030 BB 2014/06/01 00:54:35 2 3 A0015 AA 2014/06/01 01:01:11 1 2 A0001 DD 2014/06/01 01:03:01 4 8 A0020 EE 2014/06/01 01:06:21 5 11 A0011 BB 2014/06/01 01:08:19 2 4 A0005 DD 2014/06/01 01:17:20 4 13 A0011 BB 2014/06/01 01:22:41 2 8 A0016 AA 2014/06/01 01:23:47 1 2 A0010 CC 2014/06/01 01:25:08 3 11 .... 名前が同じ物でも、場所が異なると略号が変わってしまいます。 流れとしてはA001の物が場所1→2→3と進んで行きます。 名前 略号 日時 場所 不良合計 A0001 AA 2014/06/01 00:04:28 1 2 A0001 BB 2014/06/01 01:04:28 2 4 A0001 CC 2014/06/01 02:04:28 3 8 A0001 DD 2014/06/01 03:04:28 4 10 不良合計に関しては、前の物が加算されていく形になっています。 数千あるこのようなデータを今手計算で、場所毎の不良数を求めています。 例を挙げますと、上の4つのデータの場合 DDの不良合計とCCの不良合計を引いて、DDの不良合計は2 CCの不良合計とBBの不良合計を引いて、CCの不良合計は4 BBの不良合計とAAの不良合計を引いて、BBの不良合計は2 A0001 AA 2014/06/01 00:04:28 1 2 A0001 BB 2014/06/01 01:04:28 2 2 A0001 CC 2014/06/01 02:04:28 3 4 A0001 DD 2014/06/01 03:04:28 4 2 と言う形に手計算で置き換えてします。 ただ、数が膨大であり、名前に関しても同じ名前が1つではなく複数使われている事もあり計算が大変です。 何とか楽に計算する方法はないでしょうか? VBA?を使用してでもいいので、短時間で出来る集計方法があれば教えてください。
- ベストアンサー
- Excel(エクセル)
- エクセルVBAについて
以下の処理をマクロで実行しようと思っていますが、わからない部分があるので教えてください。 (例): A B C D E F G 1 1 2 3 4 5 6 7 2 10 30 50 70 90 130 150 3 4 (1)1行目のどこかの連続したセル(例えばセルA1から セルD1)をドラッグする。 (2)マクロを実行する。 (3)セルA4に、「D2-A2」を計算した値が自動的に入力 される。この例では「70-10=60」 これは、(1)で例えばセルB1からF1をドラッグした場 合には、「F2-B2」を計算した値を入力したいので す。 要は、連続したセルを選択してその始点と終点のセルの行と列を取得できればこの処理はできると思うのですが、方法が分かりませんので教えてください。 よろしくお願いします。
- 締切済み
- オフィス系ソフト
- excel VBAについて質問します
excel VBAについて質問します A列のセルには単なる数値や「44+30」のようなデータが入っているものがある。 ' + の記号があったら、セルの先頭に = を追加して計算させて答えを表示しなさい。 'マクロ実行後、A列には、数値だけが表示されることとする。 マクロ実行前 ⇒ マクロ実行後 22 --------------- 22 44+30 --------------- 77 35 -------------------- 35 22+11 --------------- 33 こういった感じにしたいんですがなかなか上手く行きません。
- ベストアンサー
- その他MS Office製品
- Excel VBA での計算について…
こんばんは、最近VBAを使い始めた初心者のものです。 画像処理をやってます。Bitmap形式の画像からRGB値を読み込んでそれぞれのワークシートに値を入れる所までは出来てます。 そのあと、RGB→XYZ→L*a*b*に変換した値を新しいワークシートの対応するセルにいれたいのですが、なにぶん初心者なのでどう書くのかわからず困ってます。 どなたか教えていただけないでしょうか? ちなみにRGB→XYZの変換式は X=0.607R+0.174G+0.201B Y=0.299R+0.587G+0.114B Z=0.066G+1.117B で、XYZ→L*a*b*の変換式は (X/0.983)>0.008856,(Y/1.000)>0.008856,(Z/1.183)>0.008856の時 L*=116(Y/1.000)^1/3 a*=500{(X/0.983)^1/3-(Y/1.000)^1/3} b*=200{(Y/1.000)^1/3-(Z/1.183)^1/3} (X/0.983),(Y/1.000),(Z/1.183)の値に0.008856以下のものがある場合は、 上式で対応する立法根の項をそれぞれ以下の式に置き換えて計算します。 (X/0.983)^1/3→7.787(X/0.983)+16/116 (Y/1.000)^1/3→7.787(Y/1.000)+16/116 (Z/1.183)^1/3→7.787(Z/1.183)+16/116
- ベストアンサー
- Visual Basic