1

Excel スプレッドシートに 2 つの列があり、それらを相互に排他的にしたいと考えています。例: B1 式: IF(A1 に「yes」が含まれ、B1 に「-」が設定されている) および A1 式: IF(B1 に「yes」が含まれており、A1 に「-」が設定されている)

基本的にこれは、1 つのセルが「はい」に変更されると、その横にある他のセルが自動的に「-」に変更されることを意味します。

Excel 数式ビルダーでこれを実行しようとすると、循環数式を作成したと表示されます。これを機能させるために何ができるか知っている人はいますか?

ありがとう

4

2 に答える 2

1

これは、VBA でのみ実現できます。ワークシートのモジュールに次のコードをコピーします (例: Sheet1)。

Private mBlnIsRunning As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)

    If Application.Intersect(Target, Me.Range("A1:B1")) _
        Is Nothing Then Sub を終了

    '無限ループを防ぐ
    mBlnIsRunning の場合は Sub を終了します

    mBlnIsRunning = True

    If Target.Address(False, False) = "A1" Then
        Me.Range("B1") = Negative(Target.Value)
    そうしないと
        Me.Range("A1") = Negative(Target.Value)
    終了条件

    mBlnIsRunning = False
サブ終了

Private Function Negative (varValue As Variant) As Variant
    '必要に応じてこの関数を変更してください
    varValue = "yes" の場合
        負 = "-"
    ElseIf varValue = "-" その後
        否定=「はい」
    そうしないと
        Negative = "はいまたは - のいずれかを入力してください!"
    終了条件
終了機能
于 2013-01-20T21:57:05.677 に答える