エクセルの練習問題を出す【練習問題】と、読者様のご質問にお答えする【教えて!エクセル関数】を毎週お送りします。表計算もおっかなびっくりの初心者から、エクセルデータベース作成もサクサク上級者まで!
今回は、なんと初!監督からの出題です^^
神谷さんが出向している"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名の読者様でした。
使った関数は違っても、それぞれに正解でした☆
エクセルの練習問題を出す【練習問題】と、読者様のご質問にお答えする【教えて!エクセル関数】を毎週お送りします。表計算もおっかなびっくりの初心者から、エクセルデータベース作成もサクサク上級者まで!