[[20220622092902]] 『日付が同じものを抽出する方法について』(VBA初心者) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『日付が同じものを抽出する方法について』(VBA初心者)

出勤状況の入力誤りをチェックする一覧を作成しているのですが、関数でも実現可能か質問させていただきます。A列に日付が入力されており、B列には時間が入力されています。また、C列には場所が入力されており、A列およびB列は同じ値の範囲かつC列は値が違うものを範囲としてD列にある人事番号が重複していないかチェックしたいです。

関数では、以下のように作成してみましたが、C列の値が違う場合の条件を追加する方法が分からず、行き詰っております。

=TEXT(COUNTIFS(A$1:A1,A1,B$1:B1,B1,D$1:D1,D1),"[>1]エラー0;")


A列 B列   C列   D列
8/1 10時〜  場所A  1001 
8/1 10時〜  場所B  1001 エラー1
8/1 10時〜  場所C  1001 エラー2
8/1 10時〜  場所A  1001 
8/1 11時〜  場所A  1002

なるべく関数で実現したいのですが、VBAでしか実現できなそうであればそちらで作成しようかと思います。ご教授のほど、よろしくお願いします。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


4行目のデータは、重複しているのでNGではないんですか?
それなら今の式で2,3,4行目がエラーになるので、それでOKなのでは?

(γ) 2022/06/22(水) 11:57


(γ)さん

一番重要である最終的にやりたい説明が抜けていました。誤解を招き大変申し訳ございません。
最終的にC列の値が違う場合とただ重複して入力している場合とで2種類の結果を表示させたいと考えていました。

最終結果:
・C列の値が異なって他の列の値が一致していた場合=人が重複しています
・それ以外の場合(A・B・C・D列の値が一致)=重複して入力しています と表示

↓のような式を作成してみたのですが、反映されない時があります。
そもそも構文を間違えているのか関数の処理が重く、検証ができない状況です。
どのようにしたら良いかアドバイスいただけないでしょうか。

=IF(SUMPRODUCT((A:A=A1)*(B:B=B1)*(C:C<>C1)*(D:D=D1)),"人のみが重複しています","重複して入力しています")

(VBA初心者) 2022/06/22(水) 12:13


(1)今の方式と、(2)D列も入れた方式の二つの結果から導けるのでは?
差分を考えるだけで済むのでは?

(γ) 2022/06/22(水) 12:44


(γ)さん

色々試してみたのですが、アドバイスいただいた方法が中々実現できずにおります。初歩的な質問で
恐縮ですが、具体例をお示ししていただくことは可能でしょうか。
(VBA初心者) 2022/06/22(水) 13:53


 (1)
 E1:=COUNTIFS(A$1:A1,A1,B$1:B1,B1,D$1:D1,D1)>1             
     これは現行条件
 (2)
 F1:=COUNTIFS(A$1:A1,A1,B$1:B1,B1,C$1:C1,C1,D$1:D1,D1)>1   
     4要素とも一致するものがあるという条件
 (3)
 G1:=AND(E1, NOT(F1))
     これでC列は異なっているがC列以外は一致するものがあるという要件になる
 ということですが。

 #  (2)がTrueのときの人数のカウントは示されたものでよいのでは?(よく見ていません確認してください)
 # 達人の皆さんからベターな案が示されるでしょうきっと。
(γ) 2022/06/22(水) 14:54

(γ)さん

ご返信ありがとうございます。やっと理解できました。
処理が重い原因も列の参照位置を値がある範囲に動的に変更しましたら
少し良くなりました。色々とご教授いただきありがとうございました。

また機会がありましたらよろしくお願いします。
(VBA初心者) 2022/06/22(水) 17:56


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.