- 締切済み
複数セルの比較は、可能でしょうか?
- みんなの回答 (6)
- 専門家の回答
- KURUMITO
- ベストアンサー率42% (1835/4283)
回答No1です。 E1セルには次の式でもよいですね。 =IF(COUNT(A1:D1)=0,"",IF(SUMPRODUCT(COUNTIF(A1:D1,A1:D1))>COUNT(A1:D1),"○","×"))
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
E1セルに =IF(COUNT(A1:D1)<2,"-",IF(COUNT(A1:D1)=COUNT(1/FREQUENCY(A1:D1,A1:D1)),"×","○")) 数値の個数が2個に満たないときは「-」としました
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! VBAになってしまいますが、一例です。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 データは1行目からあるとします。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, j As Long, k As Long, str As String, myFlg, myArray Range("E:E").ClearContents On Error Resume Next For i = 1 To ActiveSheet.UsedRange.Rows.Count If WorksheetFunction.CountA(Rows(i)) > 1 Then str = "" myFlg = False For j = 1 To 4 If Cells(i, j) <> "" Then str = str & Cells(i, j) & "," End If Next j myArray = Split(Left(str, Len(str) - 1), ",") For k = 0 To UBound(myArray) If WorksheetFunction.CountIf(Range(Cells(i, "A"), Cells(i, "D")), myArray(k)) > 1 Then myFlg = True Exit For End If Next k If myFlg = True Then Cells(i, "E") = "○" Else Cells(i, "E") = "×" End If End If Next i End Sub 'この行まで ※ 文字列データでも対応できますが、データが数値であればNo.1さんの方が簡単だと思います。 ※ 関数でないのでデータ変更があるたびにマクロを実行する必要があります。m(_ _)m
E1セルに「=IF(AND(A1<>B1,A1<>C1,A1<>D1,B1<>C1,B1<>D1,C1<>D1),"×","○")」と入力すればできます。 E1をクリックして下にドラッグすると、E列で行が増えながら数式がコピーされますので、その行に対応した数式になります。 E行を横方向にコピーすると、列(A~D)が対応してずれます。ずれてはまずい場合は、A~Dの先頭に$を付け、$A1~$D1のようにしてください。$はコピーやドラッグしても、変わらないように指定する記号です。行方向には変わる必要があるようですので、数字には$を付けません($A$1とか、A$1のようにはしない)。 空白セル(0と入力したセルと同じ扱い)も等しいかどうかの判定に使われるため、空白セルが二つ、あるいは空白セルと数値が0のセルがあると、「○」表示になります。 それではご都合が悪いようでしたら、補足欄にて仰せつけください。無い知恵を絞ってみます。
- KURUMITO
- ベストアンサー率42% (1835/4283)
E1セルには次の式を入力して下方にドラッグコピーします。 =IF(COUNT(A1:D1)=0,"",IF(SUM(COUNTIF(A1:D1,A1),COUNTIF(A1:D1,B1),COUNTIF(A1:D1,C1),COUNTIF(A1:D1,D1))>COUNT(A1:D1),"○","×"))