0

私は3列のABCを持っています

Cの値に基づいて、列Aの値を別の列(列E)に抽出する必要があります。

列Cがいいえの場合、列Aに余分な値があり、列Aに2つの等しい値が111ある場合、Cのいずれかがはいかどうかを確認し、はいの場合はその値を抽出します。列 C の両方が NO の場合、両方をリストに抽出します。

 A     B    C
123   22    NO
111   21    NO
111   22    YES
222   33    NO
222   34    NO

出力

  A    B    C
 123   22   NO
 111   21   YES
 222   33   NO
 222   34   NO
4

2 に答える 2

0

これを試して:

  • 列 A に重複がない場合は、行をコピーします
  • 列 A が重複している場合は、最初に「はい」のものを選択し、それ以外の場合はすべて「いいえ」を選択します

    Sub LoopRange()
      Dim rCell As Range
      Dim lCell As Range
      Dim jCell As Range
      Dim rRng As Range
      Set rRng = Sheet1.Range("A1:A5")
      Dim rCntr As Integer
      rCntr = 1
    
      Dim rangelist As String
    
      'loop through main list
      For Each rCell In rRng.Cells
        Dim duplicate As Boolean
        duplicate = False
    
      On Error Resume Next
      Set isect = Application.Intersect(Range(rCell.Address), Range(rangelist))
      If isect Is Nothing Then
        ' loop through rest of list to check for duplicates
        For Each lCell In rRng.Cells
            'Check for duplicates
            If lCell.Value = rCell.Value Then
                'Add duplicate row to list
                If duplicate = False Then
                    rangelist = "A" & lCell.row
                Else
                    rangelist = rangelist & "," & "A" & lCell.row
                End If
                duplicate = True
            End If
        Next lCell
    
        'If a duplicate was found
        If duplicate = True Then
            Dim nRng As Range
            Set nRng = Range(rangelist)
            Dim isNO As Boolean
            isYes = False
            For Each jCell In nRng
                If jCell.Offset(0, 2) = "YES" Then
                    Range(jCell, jCell.Offset(0, 2)).Select
                    Selection.Copy
                    Range("E" & rCntr).Select
                    ActiveSheet.Paste
                    isYes = True
                    rCntr = rCntr + 1
                End If
            Next jCell
    
            'list all no's
            If isYes = False Then
                For Each jCell In nRng
                    Range(jCell, jCell.Offset(0, 2)).Select
                    Selection.Copy
                    Range("E" & rCntr).Select
                    ActiveSheet.Paste
                    rCntr = rCntr + 1
                Next jCell
            End If
        End If
    End If
     Next rCell
    End Sub
    

これは私が得るものです

ここに画像の説明を入力

于 2013-09-18T23:03:35.473 に答える
0

あなたの英語は上手ではありませんが、これをフィールド E に入力しますか?

=IF(C1 = "NO",A1,B1)

正確ではない場合でも、少なくとも正しい方向に向ける必要があります。ところで、次のように IF ステートメントをネストできます。

=IF(C1 = "NO",IF(B1 = "YES",D1,A1),B1)
于 2013-09-18T20:28:04.787 に答える