• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL教えてください)

Excel初心者向けの使い方と注意点

このQ&Aのポイント
  • Excel初心者向けの使い方や注意点をまとめました。Excel2007(12.0.6654 5503)SP2を使用している方にも参考になる情報を提供します。
  • Excelでデータを入力する際に、特定の条件下でエラーメッセージを表示させる方法を紹介します。具体的には、A列の数字が1から連続している範囲内でB列とC列の数字が重複している場合にメッセージを表示します。
  • 具体的な例を挙げながら、A列が1から連続している範囲内でB列とC列の数字が重複している場合にエラーメッセージを表示する方法を解説します。Excel初心者の方でも理解しやすいように説明しています。

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

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

前提: グループを確定するために,B・C列に記入するより前にA列の番号を記入する A列番号はどこで1に戻っても構わないが,1に戻った後は間違い無く2,3,4…と順序よく続ける 手順: B:C列を列選択してから,データタブの入力規則を開始する 種類をユーザー設定に変え,下の空欄に =($A1<>"")*(SUMPRODUCT((OFFSET($B1,1-$A1,0,$A1,1)=$B1)*(OFFSET($C1,1-$A1,0,$A1,1)=$C1))=1) と記入し,「空白を無視する」のチェックを外してOKする。

excelwakaranai
質問者

お礼

「数式はエラーと判断されます。続けますか?」というメッセージがでても むりやりすすめていったらできました! ありがとうございました。

excelwakaranai
質問者

補足

回答ありがとうございます。 A列は先に記入するようにして データの入力規則で数式をいれてみたのですが 「数式はエラーと判断されます。続けますか?」というメッセージがでてきてしまいました>< どうすればいいでしょうか?

その他の回答 (3)

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

#1のご回答にのように作業列に「1塊ごと」に連番を関数で振り 2007ではCOUNTIFSが使えるので、2条件のCOUNTIFSを取り、>1かどうかでエラー文字列を出すかどうかの式を新たな列に入れてはどうだろう。 本件ではSUMPRODUCTを使った 例データ A-D列 1 100 1 2 200 1 0 3 300 1 0 4 300 1 1 1 200 2 0 2 400 2 0 3 200 2 1 1 500 3 0 3 200 4 0 4 500 4 0 5 200 4 1 C列は作業列 C列C2は1、C3の式は =IF(A3=A2+1,C2,MAX($C$2:C2)+1) 下方向に式を複写。 D列はD3に =SUMPRODUCT(($B$2:B2=B3)*(C$2:C2=C3)) 下方向に式を複写。 結果 上記D列。この1の行が質問該当なので、I F関数をかぶせて =IF(SUMPRODUCT(($B$2:B2=B3)*(C$2:C2=C3))>>=1,"入力済み","") A列で不連続例を挙げてみたが、質問には有無を明記してないが、それをするのがよく気が利く人。

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

こんばんは! VBAでの一例です。 ↓の画像のように1行目はタイトル行で、データは2行目以降に入力するとします。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペーストしてデータを入力してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range(Columns(2), Columns(3))) Is Nothing Or _ Selection.Count <> 1 Then Exit Sub Dim i, j, k As Long Application.ScreenUpdating = False For j = 2 To Cells(Rows.Count, 2).End(xlUp).Row If WorksheetFunction.CountA(Range(Cells(j, 2), Cells(j, 3))) = 2 Then Cells(j, 4) = Cells(j, 2) & "_" & Cells(j, 3) End If Next j i = Target.Row If Cells(i, 1) > 1 Then k = i - Cells(i, 1) + 1 Else k = i End If If WorksheetFunction.CountIf(Range(Cells(k, 4), Cells(i, 4)), _ Cells(i, 2) & "_" & Cells(i, 3)) > 1 Then MsgBox "すでに入力済みです。" Target = "" Target.Select End If Application.ScreenUpdating = True End Sub 'この行まで ※ D列を作業用の列として使用していますので、D列にはデータがないという前提です。 ※ D列が目障りであれば「非表示」にしておいてください。 ※ メッセージ表示後、もう一度入力セルを空白・選択するようにしています。 (すなわち、重複データは入力できません) ※ 入力 → 確定 の時点でマクロが走りますので、すでにデータが入っている場合はメッセージは表示されません。 ご希望の方法でなかったらごめんなさいね。m(_ _)m

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

エラーメッセージではないですが、セルを赤くして重複を警告するのはいかがでしょう。 D列を作業列として使います。 D1:=IF(A1="","",1) D2以下には:=IF(A2="","",IF(A2<A1,D1+1,D1)) と、入れます、これで連番の塊ごとに番号が振られます。 次に、B:C列を選択して条件付き書式で、 「数式が」 =(1<SUMPRODUCT((B$1:B1=B1)*($D$1:$D1=$D1)))*($A1<>"") と、設定して条件が真の時の書式を赤く設定します。

関連するQ&A