エクセルの質問です。


例をあげると、A列には犬、猫、猿、牛、馬と5つのデータがあり、B列には犬、猫、サル、ウシ、ウマの5つのデータがあります。

この際、A列とB列で一致しているデータがいくつあるのか、計算する関数はありませんでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/10/10 19:26:13
  • 終了:2006/10/11 17:04:10

回答(3件)

id:kaiton No.1

kaiton回答回数260ベストアンサー獲得回数342006/10/10 19:52:59

ポイント27pt

C1 =COUNTIF(A:A,B1)

として下に式をコピー

C列にA列と一致するB列のA列中の個数が出るので

=COUNTIF(C:C,">0")

とすれば、A列とB列で一致しているデータの個数が出てきます。

1個ずつしかないのなら、下の式は=SUM(C:C)でも良いと思います。

http://www.relief.jp/itnote/archives/000448.php


「猿」と「サル」は当然別物として判断しますが、英字の大文字、小文字の区別はできなかったと思います。

id:YuMu

ご回答どうもありがとうございます。

下に式をコピーして最後に集計するとのことですが、

これが一つの関数ではできないのでしょうかねぇ

2006/10/11 09:18:24
id:kaiton No.2

kaiton回答回数260ベストアンサー獲得回数342006/10/11 13:40:03

ポイント27pt

もし、各同じ行どうしを比較するだけなら(1牛目の犬と犬、2行目の猫と猫)


配列数式を使う方法)

=SUM((A1:A5=B1:B5)*1)

として、Ctrl+Shift+Enterで確定します。

数式の前後に{}が表示されます。


SUMPRODUCT関数を使う方法

=SUMPRODUCT((A1:A5=B1:B5)*1)


の2種類があります。

配列数式のことはこちらが

http://pc.nikkeibp.co.jp/pc21/special/hr/index.shtml

SUMPRODUCT関数は

http://pc.nikkeibp.co.jp/pc21/special/hr/hr6.shtml



同じ行でないものも検索して件数にあげる場合)

A:犬、猫..とB:猫、犬..も2件とするなら..

=SUM(NOT(ISERROR(FIND(B1:B5,A1&"_"&A2&"_"&A3&"_"&A4&"_"&A5)))*1)

として、Ctrl+Shift+Enterで確定します。

数式の前後に{}が表示されます。(配列数式)

A1&"_"&A2&"_"&A3&"_"&A4&"_"&A5 の部分はデータによっては、

A1&A2&A3&A4&A5 でも大丈夫だと思います。

ただし、5行程度なら良いですが..行数が多くなるとあまり実用的でないと思います。

なので、その場合は最初の回答のようにして、途中の作業列は非表示にするのがシンプル&メンテナンス性が高いと思います。

id:YuMu

どうもありがとうございます。

同じ行でないものも検索して件数にあげる場合を

想定しておりました。なかなか複雑ですね。。

2006/10/11 17:02:33
id:zuguimo No.3

zuguimo回答回数19ベストアンサー獲得回数32006/10/11 14:38:01

ポイント26pt

http://q.hatena.ne.jp/1160475970

URLはこのページです。

単純に右と左で一致している数を知りたいだけでしたら、マクロを使ってユーザー定義関数を作ってしまう方法でしたら思いつきましたが、既成の関数では思いつきません。

メニューバーのツール―マクロ―Visual Basic Editorで

左側から使用したいファイルの VBAProject(ファイル名) を選択し

挿入―標準モジュールを選んで以下のマクロをペーストすれば

選択範囲の中で右隣と全く値が同じセルの数を調べる関数が出来ます。もしよろしければ関数名:一致 引数:範囲でご利用下さい。


Function 一致(範囲)

a = 範囲.Row '範囲の最初の行番号

b = 範囲.Column '範囲の最初の列番号

c = 範囲.Rows.Count '範囲のセル数

e = a + c - 1 '範囲の最後の行番号

'一致したセルを数える

d = 0

For i = a To e

If Cells(i, b).Value = Cells(i, b + 1).Value Then

d = d + 1

End If

Next i

一致 = d

End Function

id:YuMu

ご回答どうもありがとうございます。

同じ行でないものも検索して件数にあげる場合を

想定しておりました(説明不足ですね)

マクロを組むしかなさそうですね

2006/10/11 17:03:11
  • id:kaiton
    今回の場合、作業セルは別シートにして、シートごと隠すと見た目は一つのセルでしているように見せかけはできます。
    それもだめなら、やはりマクロ(VBA)ですかね?
    http://www.officetanaka.net/excel/vba/db/index.htm
    そういった処理を早くするコツは、↑が参考になると思います。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません