- ベストアンサー
EXCELの行の演算:同じデータかの判定
(前提) 10列からなるデータが1行~10行まであるとします。 (したいこと) 1行目のデータとまったく同じものが2行から9行の中にあるかどうかを判定しあればその行を知らせるというようなことを行うにはどのように式をかけばよいでしょうか。 マクロ、VBAの式でもなんでもいいです、教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
2行目以下のデータと一緒に判別用の値を表示させる方法では駄目でしょうか。 2行目の横のセルに IF(2行目のデータ=1行目のデータ、1,0) 3行目の横のセルに IF(3行目のデータ=1行目のデータ、1,0) ・ ・ ・ こうすれば、1行目と同じデータを持った行には1が、そうでない行には0が表示され判別できます。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
(1)A1にa、B1にb、C1にcと入力する。 Msgbox Range("a1:c1”).Valueを実行するとエラー。 1行全体となると、Rangeで表すほかないのだから、2つの行の Range同士を1回で単純比較できない。 (2)それでは各行のセル同士を1つ1つ比較するしかない。 A1~C10に下記データを入れました。 a b b a c c a b c b a a a b b a c c c b b a c c c a b a b b モジュール1に下記を組みました。 Sub test01() retu = 3 gyou = 10 Dim fnd(10) For i = 1 To gyou For j = i + 1 To gyou If fnd(j) = "f" Then GoTo p01 For k = 1 To retu If Sheets("sheet1").Cells(i, k) <> Sheets("sheet1").Cells(j, k) Then 'この行前行の右に続けること GoTo p01 End If Next k MsgBox i & "行と" & j & "行は同じ" fnd(j) = "f" p01: Next j Next i End Sub 上記テストデータでは上手く行っていますが。
お礼
おかげでうまくいきました.どうもありがとうございました力作どうも。
- nishi6
- ベストアンサー率67% (869/1280)
行単位(10列分)での一致不一致の検証でしょうか。その前提で回答します。 質問のデータがA1~J10の10列10行にあるとします。 K2に =IF(AND($A$1=A2,$B$1=B2,$C$1=C2,$D$1=D2,$E$1=E2,$F$1=F2,$G$1=G2,$H$1=H2,$I$1=I2,$J$1=J2),"一致","") として、下方向にコピーします。 力技になっています。列が増えれば判定を分割すれば可能です。 下はユーザー定義関数で行ってみました。 1行目に対して、2行目をチェックする場合、 =RowCheck(2) または、 =RowCheck(Row()) とします。(2行目に算式を入力する場合です。Row()=2 なのでこう書けます) これを応用して、メッセージを出すようなこともできます Function RowCheck(rw As Long) Dim chkRow As String '1行目 Dim curRow As String 'チェックする行 Dim c As Integer Application.Volatile '項目をセパレータ(下はカンマ)付きで連結 For c = 1 To 10 chkRow = chkRow & "," & Cells(1, c) curRow = curRow & "," & Cells(rw, c) Next '判定 If chkRow = curRow Then RowCheck = "一致" Else RowCheck = "" End If End Function
- koyuki2001
- ベストアンサー率15% (18/118)
MATCH関数を使うといいと思います。 例: =MATCH(A1,A2:A9,0) 一致したデータがA1から何行あとにあるかが算出されます A5に一致したデータがあれば、4になります。 ただし、2つ以上あっても、A1に一番近いものしか 検出されません。
お礼
どうもありがとうございました。
お礼
おかげでうまくいきました.どうもありがとうございました