Excel(エクセル)関数の練習問題仕事ですぐ使える!役立つ!Excel(エクセル)関数の使い方・裏技を練習問題で楽しく身につけよう!

無料メルマガ【Excel(エクセル)関数の練習問題】

エクセルの練習問題を出す【練習問題】と、読者様のご質問にお答えする【教えて!エクセル関数】を毎週お送りします。表計算もおっかなびっくりの初心者から、エクセルデータベース作成もサクサク上級者まで!

メールアドレス: Powered Byまぐまぐ

No.55 Excel上級編:新旧データの差分を検索

出題

今回は、なんと初!監督からの出題です^^

神谷さんが出向している"K"社は
VBAマクロの達人ばかりの
日本有数の大変レベルの高い部署です。
なにしろ簡単なプログラミングなどは
あっさりと組み込んでしまうために
ついて行くのが精一杯で困っています。

エクセル関数でなんとかスピードアップを図りたいと
考えている場面でついにそのチャンスが
やってまいりました。

元データのシートと新データのシートの
どこが違うかをうまく見つけ出したいのですが、
これと同じパターンの関数を
以前に組み合わせて作ってもらったのですが、
なかなか思い出せません。
この関数を使用すると
500×30マス以上の大きなデータになりますと
【VBAマクロ】より計算スピードが速くなるのを
教えてもらったことがありました。

確か、こんな感じでしたが…

それにしても神谷さん、遅くまで連日ご苦労様ですね。
頑張ってくださいね。。。


解答

余りにも"セッカチ"なので、
答えから書きます。

一番上の"C2"のセルには、
"=IF(A2=B2,"OK","変更!!")"
とか、
"=IF(EXACT(A2,B2),"OK","変更!!")"
の関数が入ればOKです。
今回の場合は、列が単独ですのでどちらも正解です。

【EXACT関数】を使った場合ですが、
①セルの書式設定を無視し、文字列で判定するので
"平成19年9月20日"と"2007/09/20"と"39345"とか
全て同一のものとして認識してくれる。
②オブジェクトシートも認識してくれる
③複数セルもしくはシートでの串刺しを行なう場合に
シートをコピーして使用するのに都合良い。
④真ん中の3文字だけとか、左の2文字だけとか
【MID関数】や【LEFT関数】を組込むとか
ネストとして派生しやすいので
テンプレートに作っておくと何かと重宝。。。
等の理由から【EXACT関数】がちょっとだけ便利です。

関数の組み込みの手順については、
こんな感じになります。




また、【VBAマクロ】をある程度カジっている方で、
PCのCPUの馬力に余裕のある方は
下記のコマンドに"セルの番地"を設定してから
モジュールにコピーすればOKです。

Sub 重複を探す()
Dim RetRange As Range
Range("列の始まりのセル番地:列の終りのセル番地").Select

For i = 列の始まりのセル番地 To 列の終りのセル番地
Set RetRange = Selection.Find(What:=Cells(i, 1).Value, _
after:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext)
If Not RetRange Is Nothing Then
If RetRange.Address <> Cells(i, 列の始まりのセル番地).Address Then
RetRange.Interior.ColorIndex = 5   (5=紺色)
Cells(i, 列の始まりのセル番地).Interior.ColorIndex = 5   ("5"は色番号です。)
End If
End If
Next
End Sub

(  ̄ー ̄)ノ 神谷さん、こんなんでどぉ?

ちなみに、回答を送ってくださったのは2名の読者様でした。
使った関数は違っても、それぞれに正解でした☆

無料メルマガ【Excel(エクセル)関数の練習問題】

エクセルの練習問題を出す【練習問題】と、読者様のご質問にお答えする【教えて!エクセル関数】を毎週お送りします。表計算もおっかなびっくりの初心者から、エクセルデータベース作成もサクサク上級者まで!

メールアドレス: まぐまぐ