![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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?5a7ff87)
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ランキング
-
【マクロ】for next構文について
-
エクセルで表
-
PDFの請求明細をエクセルにしたい
-
職場の人から聞かれており、こ...
-
ユーザー定義関数をアドイン登...
-
下記マクロでMsgBox "空白です...
-
エクセルでバーコード作成し使...
-
在庫管理表に使うエクセルの関...
-
Excel関数-文字列で自動作成さ...
-
エクセルの関数について教えて...
-
Excelデータをコピペして、ペー...
-
Excelで50個のセルに同じ文字を...
-
Excel 2019 は、SPILL機能があ...
-
Microsoft Officeの中古は信用...
-
エクセルの表で1年間の曜日を...
-
エクセルで会社の従業員のデー...
-
スプレッドシート、Excelでの数...
-
[オートフィルタ]で抽出された...
-
エクセルでB列でフィルターをか...
-
エクセルの問題です。絶対値の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA、別ブックへ転記す...
-
エクセルでの作業計算方法について
-
時間によってファイル名が変わ...
-
【関数】適切な文字数の数字を...
-
Excelについて教えてください
-
エクセル初心者です 関数の入れ...
-
【マクロ】ファイル名の変更に...
-
UNIQUE関数が使えないバージョ...
-
エクセルの計算
-
【関数】先頭だけにある、半角...
-
Excelで、決まった行を繰り返し...
-
Excelでセルの値が同じか...
-
LOOKUP関数を使えばいいのでし...
-
Excel
-
はがきについて。
-
エクセルの条件付き書式につい...
-
エクセルのデーターが2か月前の...
-
エクセル②
-
エクセルで「-0.0」と表示さ...
-
Microsoft1Officeの互換ソフト...
おすすめ情報