Board logo

標題: [發問] 三個值之間的>或=或<的排列組合 [打印本頁]

作者: papaya    時間: 2018-2-18 19:33     標題: 三個值之間的>或=或<的排列組合

祝福各位大大︰新春快樂!



[attach]28378[/attach]

假設有三個值︰A,B,C
將三個值之間的"大於"或"等於"或"小於"的排列組合(重複的組合,則取其1個組合)表列於A欄。
EX:
A1= A>B,A>C,B>C
A2= A>B,A>C,B=C
A3= A>B,A>C,B<C
其餘......以此類推

請問︰VBA的語法編寫。謝謝!
作者: papaya    時間: 2018-2-18 21:59

備註:
A,B,C都是>0的整數。謝謝!
作者: jackyq    時間: 2018-2-21 10:12

回復 2# papaya

假設 A=1 , B=2, C=3
最後的輸出結果

你到底是要
(1)
A1= A>B,A>C,B>C
A2= A>B,A>C,B=C
A3= A>B,A>C,B<C

還是
(2)
A1= A<B,A<C,B<C

還是

(3)
A1= 1<2,1<3,2<3
作者: hcm19522    時間: 2018-2-21 17:02

http://blog.xuite.net/hcm19522/twblog/566920733
作者: papaya    時間: 2018-2-21 20:31

本帖最後由 papaya 於 2018-2-21 20:43 編輯

回復 3# jackyq
j大:新春快樂!
希望最後的輸出結果是:
(1)
A1= A>B,A>C,B>C
A2= A>B,A>C,B=C
A3= A>B,A>C,B<C

重複的組合,則取其1個組合,則共有3*3*3=27組
但不成立的不列出
EX:
A>B,A=C,B>C
A>B,A=C,B=C

勞駕幫忙!謝謝您!
作者: papaya    時間: 2018-2-21 20:55

本帖最後由 papaya 於 2018-2-21 20:56 編輯

回復 4# hcm19522
j大:新春快樂!
感謝您的函數解^^
請問:
1_2007版的IFERROR函數要如何改成2003版的ISNA來應用

2_A,B,C"三者之間的>"或"="或"<"有衝突的(即不能成立)組合,不列出時~
EX:
B4的A>B,A=C,B>C
B5的A>B,A=C,B=C
B7的A>B,A<C,B>C
B8的A>B,A<C,B=C
:
:
公式要如何修正?
勞駕再賜正!
謝謝您!
作者: jackyq    時間: 2018-2-21 22:33

回復 6# papaya


    終於看懂你要幹麻
作者: jackyq    時間: 2018-2-21 22:44

Public Sub 最簡單法___________試誤()

          ABC = Split("A>B,A>C,B>C", ">")
       運算子 = Split(">,=,<", ",")
    ABC_Count = UBound(ABC) - LBound(ABC) + 1
運算子_Count = UBound(運算子) - LBound(運算子) + 1

Set VBScript = CreateObject("MSScriptControl.ScriptControl")
    VBScript.Language = "VBScript"
     
Cells.Clear
For k1 = LBound(運算子) To UBound(運算子)
For k2 = LBound(運算子) To UBound(運算子)
For k3 = LBound(運算子) To UBound(運算子)

     For value_try1 = 1 To ABC_Count
     For value_try2 = 1 To ABC_Count
     For value_try3 = 1 To ABC_Count
         s = value_try1 & 運算子(k1) & value_try2 & " AND " & _
             value_try1 & 運算子(k2) & value_try3 & " AND " & _
             value_try2 & 運算子(k3) & value_try3 _

         If VBScript.Eval(s) Then
            rr = rr + 1
            Cells(rr, 1) = ABC(0) + 運算子(k1) + _
                           ABC(1) + 運算子(k2) + _
                           ABC(2) + 運算子(k3) + _
                           ABC(3)
            
            value_try1 = ABC_Count
            value_try2 = ABC_Count
            value_try3 = ABC_Count
         End If
     Next
     Next
     Next

Next
Next
Next

End Sub
作者: papaya    時間: 2018-2-22 16:39

回復 4# hcm19522
h大:新春快樂!
感謝您的函數解^^
請問:
方式二C1:C28=IF(ROW(A1)>27,"","A"&MID(">=<",INT(ROW(A9)/9),1)&"B,A"&MID(">=<",MOD(INT(ROW(A3)/3)-1,3)+1,1)&"C,B"&MID(">=<",MOD(ROW(A1)-1,3)+1,1)&"C")
A,B,C"三者之間的>"或"="或"<"有衝突的(即不能成立)組合,不列出時~
EX:
B4的A>B,A=C,B>C
B5的A>B,A=C,B=C
B7的A>B,A<C,B>C
B8的A>B,A<C,B=C
:
:
公式要如何修正?
勞駕再賜正!
謝謝您!
作者: papaya    時間: 2018-2-22 16:46

回復 8# jackyq
j大:
感謝您的程式解^^

測試後~答案完全正確~感恩^^




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)