• ベストアンサー

Excel 計算結果のみを残し続けたいのですが・・・

Excel初心者で申し訳ありませんが、教えてください。 A列に出席番号を記述しています。B1セルに出席番号を入力すると、 該当番号のB列に”○”を表示させたいのです。 ただ、その結果を残して次の番号をB1に入れてたいのです。 (宿題を提出しているかどうかのチェック表を作成したいのです) ちなみに、B2以下には、=IF(B$1=$A$3:$A$43,"○"," ")という式を入力しています。毎回コピーして値を貼り付ける作業を繰り返す以外で どのような方法がありますか? よろしくお願いします。

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

  • ベストアンサー
  • k-pix
  • ベストアンサー率51% (50/98)
回答No.2

詳しい方が回答下さるまでの繋ぎにどうぞ。 私には、マクロを使う以外にはわかりません。 マクロに関して詳しくは、Web検索などをご利用ください。 Excel が起動している状態で Altキー + F11キー でマクロのエディタ(Visual Basic Editor)を開きます。 Visual Basic Editor を開くとプロジェクトいう名のウインドウがあります。 そのウィンドウの中に VBAProject というのがあり、 その階層下に Microsoft Excel Objects というのがあり、 さらにその階層下に ワークシート名が並んでいると思います。 チェック表を作成しているシート名(たとえばSheet1 )に該当する部分をダブルクリックしてください。 すると、新しく真っ白なウインドウが表示されると思います。 そのウィンドウに下記のコードをコピペしてください。 (出席番号は、A3:A43 の範囲に書かれているとしています。) その後、ファイルメニューから「終了して Microsoft Excel に戻る」を選択してください。 Excel に戻った後は、お望みの結果が得られるはずです。 これまで書かれていた B2 以下の式は不要です。 なお、B1セルに値を入力した後も、次のセルに移動しないようにしてあります。 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Integer If Target.Column = 2 And Target.Row = 1 Then For i = 3 To 43 If ActiveSheet.Cells(i, 1) = ActiveSheet.Cells(1, 2) Then ActiveSheet.Cells(i, 2) = "○" Exit For End If Next ActiveSheet.Cells(1, 2).Select End If End Sub

turtle-h
質問者

お礼

とてもわかりやすく回答していただきありがとうございました。 おかげでやっとできました! これを元に少しVBAの勉強をして、B列以降にも計算できるようにしていきたいと思っています。 本当にありがとうございました。

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

その他の回答 (3)

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

>B1セルに出席番号を入力すると B1ひとつに入力するのは、魅力的と思いますが、これではVBAを使わないと絶対関数ではできません。 ーー そこで(仮に)D列を使うことを考えました。 D列において、順次上から下のセルへ入力していく。 制約は無く、 入力順序は生徒番号順で無くても良いし 、空白セルがあっても良い。 ーー 例データ 20人学級の例 A列生徒番号 A列 B列(関数式の結果) 1 2 3 ○ 4 5 ○ 6 7 8 9 10 11 12 ○ 13 14 ○ 15 16 ○ 17 18 19 20 ーー B1に =IF(ISERROR(MATCH(ROW(),$D$1:$D$20,0)),"","○") B20まで式を複写する。 D列に 12 3 5 14 16 のように順次入れていく。番号を入れると即反応してくれる。 結果上記B列の通り === VBAならSheet1のChangeイベントに Private Sub Worksheet_Change(ByVal Target As Range) Dim ret As Variant If Target.Address <> "$C$1" Then Exit Sub '入力する場所 Dim c As Range Set c = Worksheets("Sheet1").Range("A1:A20").Find(Worksheets("Sheet1").Range("C1")) If c Is Nothing Then MsgBox "なし" Exit Sub Else Application.EnableEvents = False c.Offset(0, 1) = "○" Application.EnableEvents = True End If End Sub あと訂正抹消の問題があるが、略。 ーー 関数の方はB列の、その番号が入ったセル内容を抹消(DEL)すれば該当行の○も消える。

turtle-h
質問者

お礼

丁寧に関数のやり方と、マクロの方法2パターンも回答していただきありがとうございました。 これを機会に少しVBAの勉強もしてみたいと思っています。

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

ご質問の通りのやり方ではないのですが。。。 1クラス41人として、 ・A2~A42 に出席番号を書いておき、 ・B1~AP1 の範囲に宿題を提出した学生の出席番号を入力する(Tabキーでセルを移動します) とします。 B2に、=IF(COUNTIF($B$1:$AP$1, A2)>0, "○", "")と書き、 B42までコピーすれば良いと思います。 入力し終わったら、B2~B42の範囲をコピーし、他の場所へ「形式を指定して貼り付け」(値を指定)すれば、また使えます。 本当ならAccessを使うところなのでしょうが、覚えるのが大変ですよね。

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

関連するQ&A

  • エクセル2000の計算式について

    エクセル2000の計算式について A1に入力する値が、5000未満の時→B1セルに、0 が A1に入力する値が、5000以上10000未満の時→B1セルに、500 が A1に入力する値が、10000以上15000未満の時→B1セルに、1000 が A1に入力する値が、15000以上20000未満の時→B1セルに、1500 が A1に入力する値が、20000以上25000未満の時→B1セルに、2000 が 表記されるような、B1セルの「計算式」を教えていただけませんか? 「IF関数」を組み合わせる事で解決するのでしょうか? 関数の組み合わせ方法が、解りません…

  • エクセル 「値貼り付け」の結果が

    Excel2003を使用しています。 【準備】 ・セル"A3"に ="" と入力します。(何も表示されない状態) ・セル"A3"をセル"B3"に値貼り付けをします。 【操作】 この状態でセル"B6"を選択し、End(xlUp)【Endを押した後、↑を押す】を行います。 【結果】 何もデータが無い筈のセル"B3"にひっかかってしまいます。 一度セル"B3"で「F2」を押し「Enter」を押すと、ひっかからなくなります。 データが1つだけの簡単な例なのですが、 A列からB列に値貼り付けした中で、 データの入っているセルのみEnd(xlUp)に引っかかるようにする簡単な方法はないでしょうか。

  • エクセル2003の条件付き書式設定についての質問です。

    エクセル2003の条件付き書式設定についての質問です。 A列に人の名前、B列には1,2,3の区分けの番号を入力します。B列の値が1であれば該当するA列のセルを黄色、B列の値が2であれば該当するA列のセルを青とかにする方法を教えて下さい。 B列が1であれば、そのセルを黄色とかにすることは条件付き書式でできますが、B列の値を参照してその結果に基づいて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でこんな計算がした!(T-T)

    私はExcel2003を使っています。 教えて欲しいのですが、A1のセルに例えば19,600と入力しています。 B1のセルでA1のセルよりも9%高い数字を求めるのにB1のセルに =A1/0.991と入力しています。 この値が19778になります。 ここで、78は切り捨てて19700になるようにしたいのです。 説明が下手で申し訳ないのですが、急いでいますのでどなたか 助けて下さい。 よろしくお願いします。

  • エクセルで別シートの値を取得したいです。

    エクセルで質問があります。 別シートからセル値を取得したいです。 ただ、セル番地は行番号、列番号で指定し、 行、列番号はセルに入力してある値を使いたいです。 例 Aシート(値格納シート) B1セル値=1000 -------------- Bシート(値取得シート) A列=行番号入力 B列=列番号入力 C列=Aシートの取得関数 A2セル値=1 B2セル値=2 C2セル=1000(取得値) C2セルの関数に、A2とB2の値を使って Aシートのセル値を取得したいです。 よろしくお願いします。

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

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

  • EXCELでの計算式について

    お世話になります。 Excel2000を使って簡単な計算を行っています。 A列とB列に数字が並んでいます。 (ABCは列番号、行番号は省いています) A B C 1 3 3 2 3 4 2 1 この状態でC1に計算式 =A1-B1 を入れるとC1は-2になります。 C1のセルをコピーしてC2~C4に貼り付けました。 すると予想では A B C 1 3 -2 3 2 1 3 4 -1 2 1 1 となるはずが A B C 1 3 -2 3 2 -2 3 4 -2 2 1 -2 となってしまいました。 C列の計算式は何が悪かったのでしょうか? コピー&ペーストをせず1つずつ計算式を入力していけば正しい値が出るのですが、行数は1000行以上あるので無理です。 どうすれば元の状態になりますか?

  • エクセルで計算結果だけを利用したい

    良い方法を教えてください。 シートAは、ワークシートです。 所々に入力欄がありますが、それぞれは計算した結果を入力するものです。計算結果が変わってしまったり、転記ミスを無くすことを目的で、シートBを作り、これもまた、ワークシートとして多々計算したものを+シートB!A1の形でリンクしています。 提出するものは、シートAですが、 提出先には、シートBの存在を知られたくありません。 シートを見えなくするのであれば、セルの中身でリンク表示で 提出先に分かってしまうので、シートAの入力欄(シートBにリンクしている)をコピー、値を貼り付けで、数値だけにした上で、 シートBを削除して、提出しています。 しかしながら、とても面倒です。 なぜなら、そのリンクを切るのに、50回程度コピー、値の貼り付けを 行うからです。 なんとか、簡単に済ませる良い方法はないでしょうか? よろしくお願いします。

  • エクセルでの計算式の作り方を教えてください。

    例えば、ある調査手数料を計算する場合、調査4件までは30,000円、1件増すごとに5,000円加算されるとします。 A列のセルに、1,2,3,4,5・・・と件数を入力し、その右側のB列のセルに料金を出す計算式を作りたい場合、 5件以上の場合は、B5=(A5-4)*5000+30000 (A5は件数を入力したセル、以下A6,A7・・・となります) となることはわかるのですが、4件目まで(A1~A4)の場合のB列の値がおかしくなってしまいます。 どういう式を作って入れておけばよいのでしょうか?

専門家に質問してみよう