[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『複数シート間での数値照合』(TOMOMIN)
複数シート間に入力したデータ(数値)を照合したい。
紙ベースの集金伝票をエクセルで集計しています。
集金グループABC
グループA
集金予定の金額をシート1のA列に入力
集金完了した金額をシート2のA列に入力
集金不能の金額をシート3のA列に入力
グループB
集金予定の金額をシート1のB列に入力
集金完了した金額をシート2のB列に入力
集金不能の金額をシート3のB列に入力
グループC・・・・
列ごとに
シート1に有るがシート2又は3に無いもの
シート1に無いがシート2又は3に有るもの
を照合して重複入力 誤入力 入力漏れを手早く見つけ出す方法はないでしょうか?
金額は同一のものも有ります。
シートのレイアウトは固定されているため新たな列を増やすことは困難です
該当セルに背景色を付けるか 使用していないセルに該当のセル番号を表示するなどの
方法があれば作業がしやすくなります。
COUNTIFやVLOOKUPを試しましたが指定された数値しか検索できないようです。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
もう構造がおかしすぎて手の出しようがない・・・というのが意見です。
シート1に有って、シート2、シート3にないもの(シート2、シート3の入力忘れ) こういうことですよね?
じゃあそのキーは何になります? 金額しか入力しないなら、何を持って重複と見なしますか? 行番号ですか? それなら新しいことしなくても、整合できますよね?
>シートのレイアウトは固定されているため新たな列を増やすことは困難です これが前提でしたら、もうキーを追加するなんて無理なんでしょうけど・・・ (稲葉) 2015/09/10(木) 08:26
やってることは違いますが、少し参考になるかもしれない。
[[20150829101909]] 『未収金の消込作業』(やもめ)
(カリーニン) 2015/09/10(木) 08:30
稲葉さんと同じ印象を持ちました。 職場ではこのレイアウトでずっと運用されているんでしょうから、それに従って業務を行わなければいけないのでしょうが・・
まず、根本的には、明細データを特定するキー(伝票番号 等々)が存在しない??。 本当だとしたら、これは考えられませんね。
また、同じデータの3つの情報を、わざわざ、わけて別シートにするから、このシートにあるのに、あっちのシートにはない とか、 重複がないかとか、漏れがないかとか・・・そんな、余計な作業が発生するんですよ。
わざわざ、仕事を増やすために考えられたレイアウト(いいすぎ?) 同じ金額があるということは、勘違いして、別のデータに 不能 なんて記述するかもしれない。 これは、もう、仕事が増えるというレベルをこえて、どうぞ、間違ってくださいといっているレイアウトです。
予定 とか 完了 とか 不能 とか、そういった 【イベント】ごとにシートをわけるのではなく グループごとに別シートにするか、同じシートを使うかは別にして、1つのシートに、予定列、完了列、不能列を配置。 そうすれば、そのシートを見れば、別のシートをひっくりかえして探さなくても進捗状況が一目瞭然だと思いませんか?
★ いずれにしても、データを特定するキーは【必須】ですよ。
(β) 2015/09/10(木) 08:42
Dim yotei() As Integer, kanryou() As Integer, hunou() As Integer, hantei() As Integer, cl As Range, maxval As Long, i As Long, g As Integer
Sheets(1).Columns("A:C").Interior.Pattern = xlNone '集金予定 Sheets(2).Columns("A:C").Interior.Pattern = xlNone '集金完了 Sheets(3).Columns("A:C").Interior.Pattern = xlNone '集金不能
For g = 1 To 3
maxval = Application.Max(Sheets(1).Columns(g), Sheets(2).Columns(g), Sheets(3).Columns(g), 1)
ReDim yotei(1 To maxval) ReDim kanryou(1 To maxval) ReDim hunou(1 To maxval) ReDim hantei(maxval)
For Each cl In Intersect(Sheets(1).Columns(g).Cells, Sheets(1).UsedRange) '集金予定 If Val(cl) > 0 Then yotei(Val(cl)) = yotei(Val(cl)) + 1 Next cl
For Each cl In Intersect(Sheets(2).Columns(g).Cells, Sheets(2).UsedRange) '集金完了 If Val(cl) > 0 Then kanryou(Val(cl)) = kanryou(Val(cl)) + 1 Next cl
For Each cl In Intersect(Sheets(3).Columns(g).Cells, Sheets(3).UsedRange) '集金不能 If Val(cl) > 0 Then hunou(Val(cl)) = hunou(Val(cl)) + 1 Next cl
For i = 1 To maxval If yotei(i) <> kanryou(i) + hunou(i) Then '予定<>完了+不能 If yotei(i) + kanryou(i) + hunou(i) = 1 Then hantei(i) = 1 If yotei(i) + kanryou(i) + hunou(i) > 1 Then hantei(i) = 2 End If
Next i
For Each cl In Intersect(Sheets(1).Columns(g).Cells, Sheets(1).UsedRange) If hantei(Val(cl)) = 1 Then cl.Interior.Color = 255 If hantei(Val(cl)) = 2 Then cl.Interior.Color = 65535 Next cl
For Each cl In Intersect(Sheets(2).Columns(g).Cells, Sheets(2).UsedRange) If hantei(Val(cl)) = 1 Then cl.Interior.Color = 255 If hantei(Val(cl)) = 2 Then cl.Interior.Color = 65535 Next cl
For Each cl In Intersect(Sheets(3).Columns(g).Cells, Sheets(3).UsedRange) If hantei(Val(cl)) = 1 Then cl.Interior.Color = 255 If hantei(Val(cl)) = 2 Then cl.Interior.Color = 65535 Next cl
Next g
End Sub
(mm) 2015/09/10(木) 13:19
(mm)さんの案を教本見ながら試してみたいと思います
(TOMOMIN) 2015/09/23(水) 00:12
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.