空白でないセルの範囲が等しいかどうかを確認するネイティブ数式

空白でないセルの範囲が等しいかどうかを確認するネイティブ数式

3 つのセルがあり、その任意の組み合わせが空白になる場合があります。空白でないすべてのセルが等しいかどうかを確認したいと思います。セル 1 と 2 に値があり、セル 3 が空白の場合、セル 1 と 2 が等しい場合に数式が TRUE を返すようにします。

ない場合はネイティブこれに対する数式であれば、VBA マクロを記述するだけです。

アップデート: 実際には、VBA マクロを書いた方が早かったです。私は .NET/c# 開発者ですが、昔の VBA の多くを忘れてしまっているので、ここでのコード (特に戻り値の設定と関数の終了) の改善には前向きです。

Public Function NonblankValuesAreEqual(cells As Range) As Boolean

Dim lastval As String

lastval = cells(1).Value

For i = 2 To cells.Count
    If lastval <> "" Then
        If cells(i).Value <> "" Then
            If cells(i).Value <> lastval Then
                NonblankValuesAreEqual = False
                Exit Function
            End If
        End If
    End If
    lastval = cells(i).Value
Next

NonblankValuesAreEqual = True

End Function

答え1

すでにマクロで答えを出していますが、ここでは VBA 以外の解決策を紹介します。これは配列数式であり、Ctrl + Shift + Enter で確定する必要があります。

=(SUM(IFERROR(1/COUNTIF(A1:A3,A1:A3),0))=1)

この数式は、空白セルを無視して、範囲内の一意の値の数をカウントします。一意の値の数が 1 の場合、すべての値は同じであり、数式は TRUE を返します。質問で指定されていない唯一のことは、すべてのセルが空白の場合にどうするかということです。現時点では、数式は TRUE を返しますが、これを変更するには、追加のロジックを追加するのが簡単です。

答え2

各列のペアが完全に等しいか (大文字と小文字が区別される)、または空白が含まれているかどうかを確認します。

=OR(EXACT(A2,B2),ISBLANK(A2),ISBLANK(B2))
=OR(EXACT(A2,C2),ISBLANK(A2),ISBLANK(C2))
=OR(EXACT(B2,C2),ISBLANK(B2),ISBLANK(C2))

=AND(D2:F2)

例:

A   B   C   AB      AC      BC      AND
1   1   1   TRUE    TRUE    TRUE    TRUE
1   1       TRUE    TRUE    TRUE    TRUE
A           TRUE    TRUE    TRUE    TRUE
    A       TRUE    TRUE    TRUE    TRUE
        A   TRUE    TRUE    TRUE    TRUE
a   A   a   FALSE   TRUE    FALSE   FALSE
a   a       TRUE    TRUE    TRUE    TRUE
a       2   TRUE    FALSE   TRUE    FALSE
    A   A   TRUE    TRUE    TRUE    TRUE
A       A   TRUE    TRUE    TRUE    TRUE
    A   B   TRUE    TRUE    FALSE   FALSE
A   B   C   FALSE   FALSE   FALSE   FALSE

注: より大きなセットの場合、隣接する列の数は大幅に増加します: n! / 2

答え3

この小さなUDF():

Public Function EqualTest(r1 As Range, r2 As Range, r3 As Range) As Variant
   Dim BlankCount As Long, v1 As Variant, v2 As Variant, v3 As Variant
   v1 = r1.Value
   v2 = r2.Value
   v3 = r3.Value
   BlankCount = 0
   If v1 = "" Then BlankCount = BlankCount + 1
   If v2 = "" Then BlankCount = BlankCount + 1
   If v3 = "" Then BlankCount = BlankCount + 1

   If BlankCount > 1 Then
      EqualTest = True
      Exit Function
   End If

   If BlankCount = 0 Then
      If v1 = v2 And v1 = v3 And v2 = v3 Then
         EqualTest = True
         Exit Function
      Else
         EqualTest = False
         Exit Function
      End If
   End If

   If v1 = v2 Or v1 = v3 Or v2 = v3 Then
      EqualTest = True
   Else
      EqualTest = False
   End If
End Function

ここに画像の説明を入力してください

注記:

セルは連続している必要はなく、UDF()数値セルとテキストセルの両方で機能します。

答え4

試す:

=COUNTA(A:A)=COUNTIF(A:A,A1)

基本的に、空白でないセルの数を数えます。最初のセルと一致するセルの数を数えます。それらが同じであれば、すべて同じである必要があります。2 番目の COUNTIF でどのセルを数えるかは、実際には重要ではありません...すべてが同じでない場合、COUNTA と等しくなる可能性は低いためです。

[編集] 最初のセルが空白になる場合は、代わりにこれを試してください:

=COUNTA(A:A)=COUNTIF(A:A,VLOOKUP("*",A:A,1,FALSE))

COUNTIF でチェックする最初の空白でないセルを見つけようとします。

関連情報