![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
Excel初心者で申し訳ありませんが、教えてください。
A列に出席番号を記述しています。B1セルに出席番号を入力すると、
該当番号のB列に”○”を表示させたいのです。
ただ、その結果を残して次の番号をB1に入れてたいのです。
(宿題を提出しているかどうかのチェック表を作成したいのです)
ちなみに、B2以下には、=IF(B$1=$A$3:$A$43,"○"," ")という式を入力しています。毎回コピーして値を貼り付ける作業を繰り返す以外で
どのような方法がありますか?
よろしくお願いします。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_05.png?e8efa67)
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
とてもわかりやすく回答していただきありがとうございました。
おかげでやっとできました!
これを元に少しVBAの勉強をして、B列以降にも計算できるようにしていきたいと思っています。
本当にありがとうございました。
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)すれば該当行の○も消える。
丁寧に関数のやり方と、マクロの方法2パターンも回答していただきありがとうございました。
これを機会に少しVBAの勉強もしてみたいと思っています。
No.3
- 回答日時:
こんにちは。
>毎回コピーして値を貼り付ける作業を繰り返す以外で
それなら、マクロ以外にはないと思います。
画面の下のシート[タブ]を右クリックして、コードの表示で以下を貼り付けて、Alt + Q で画面を閉じます。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ret As Variant
If Target.Address <> "$B$1" Then Exit Sub '入力する場所
'レガシースタイル
ret = Application.Match(Target.Value, Range("A1", Range("A65536").End(xlUp)), 0)
If Not IsError(ret) Then
Application.EnableEvents = False
Cells(ret, 2).Value = "○"
Application.EnableEvents = True
End If
End Sub
No.1
- 回答日時:
ご質問の通りのやり方ではないのですが。
。。1クラス41人として、
・A2~A42 に出席番号を書いておき、
・B1~AP1 の範囲に宿題を提出した学生の出席番号を入力する(Tabキーでセルを移動します)
とします。
B2に、=IF(COUNTIF($B$1:$AP$1, A2)>0, "○", "")と書き、
B42までコピーすれば良いと思います。
入力し終わったら、B2~B42の範囲をコピーし、他の場所へ「形式を指定して貼り付け」(値を指定)すれば、また使えます。
本当ならAccessを使うところなのでしょうが、覚えるのが大変ですよね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Excel(エクセル) ある数値に対して、値を返す数式についてです 2 2022/09/13 22:06
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- Excel(エクセル) Excel2007での条件付き書式について 6 2023/05/02 10:56
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Visual Basic(VBA) VBA初心者です。電話番号の数字の前に0を表示させたいです。 2 2022/12/14 03:58
- Excel(エクセル) ExcelのIF関数について 4 2023/05/24 12:54
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IFとIFS関数
-
Excelを無料で使うには? パソ...
-
セルの数を求めたい
-
エクセルの数式バーのフォント...
-
Excelの表示についての質問
-
再質問です。マクロの修正箇所...
-
データチェックを行うエクセル...
-
Excelに詳しい方! B列が「日...
-
西暦や和暦の表示をyyyymmdd表...
-
Excelで50個のセルに同じ文字を...
-
Excelの数式について教えてくだ...
-
Excel VBAで全ての矢印を赤色に...
-
エクセル関数を使って
-
祝日と土曜、日曜の合計をカウ...
-
xlsxファイルを保存する際にPDF...
-
Excelについて
-
エクセルVBA、別ブックへ転記す...
-
エクセルで「ページレイアウト...
-
2列に入っているデータを1列...
-
【ExcelVBA】名前を付けて保存→...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
半角カタカナをヘボン式ローマ...
-
(マクロ)vlookupの元データを同...
-
エクセルで上位バイトのセルと...
-
exselの質問です
-
Excel 大小比較演算子による「...
-
Excel VBについての質問です。
-
エクセルの問題です。絶対値の...
-
非表示列の再表示に失敗
-
職場の人から聞かれており、こ...
-
Excel関数-文字列で自動作成さ...
-
Excelデータをコピペして、ペー...
-
ユーザー定義関数をアドイン登...
-
【マクロ】for next構文について
-
エクセルの日付を編集する
-
【マクロ】VLOOKUPにて参照元に...
-
exselで最小数で並び替える関数
-
libre 表計算ソフトの計算がう...
-
エクセルで表
-
エクセルの表で1年間の曜日を...
-
西暦和暦
おすすめ情報