Board logo

標題: [發問] 矩陣 or VBA 如何建立 ? [打印本頁]

作者: duck_simon    時間: 2014-4-17 09:30     標題: 矩陣 or VBA 如何建立 ?

請教各位大大先進:
矩陣 or  VBA 如何建立 ?
如附件內說明:
作者: ML089    時間: 2014-4-17 10:48

L27 =N(COUNT(MATCH(G27:K27,G8:K8,))>3)
陣列輸入公式 (CTRL+SHIFT+ENTER 齊按輸入公式)
作者: duck_simon    時間: 2014-4-17 20:32

L27 =N(COUNT(MATCH(G27:K27,G8:K8,))>3)
陣列輸入公式 (CTRL+SHIFT+ENTER 齊按輸入公式)
ML089 發表於 2014-4-17 10:48



    回ML089大大: 是我表達錯誤啦 !?
  是前20期內,  每一期都要比對.. Sorry !..
作者: ML089    時間: 2014-4-17 22:43

第1期比第2期~第20期嗎?
第2期比第3期~第21期嗎?
第3期比第4期~第22期嗎?
作者: GBKEE    時間: 2014-4-18 09:27

回復 3# duck_simon
試試看
  1. Option Explicit
  2. Sub Ex()
  3.     Dim Rng(1 To 3) As Range, i As Integer, ii As Integer, iii As Integer
  4.     Dim Msg(1 To 5) As Integer
  5.     Dim MsgAll(1 To 19) As Integer
  6.     With Sheet1
  7.         Set Rng(1) = .Range("G1:K" & .Cells(.Rows.Count, "G").End(xlUp).Row)  'G:K 的範圍
  8.         For i = 20 To Rng(1).Rows.Count                                       '第20列開始
  9.             Set Rng(2) = Rng(1).Rows(i)
  10.             Set Rng(3) = Rng(2).Offset(-19).Resize(19)                         '往上19列的範圍
  11.             Erase MsgAll                     '紀錄19列中的 Msg
  12.             'Erase 陳述式 重新初始化固定大小陣列的元素 , 並釋放動態陣列的儲存空間
  13.             For ii = 1 To 19
  14.                 Erase Msg
  15.                 For iii = 1 To 5
  16.                     If Application.CountIf(Rng(3).Rows(ii), Rng(2).Cells(iii)) Then Msg(iii) = 1  '記錄每一列的相同數
  17.                 Next
  18.                 If Application.Sum(Msg) >= 4 Then MsgAll(ii) = 1
  19.             Next
  20.             If Application.Sum(MsgAll) >= 3 Then
  21.                 Rng(2).Cells(1, iii) = 1
  22.             Else
  23.                 Rng(2).Cells(1, iii) = 0
  24.             End If
  25.         Next
  26.     End With
  27. End Sub
複製代碼

作者: duck_simon    時間: 2014-4-18 16:33

第1期比第2期~第20期嗎?
第2期比第3期~第21期嗎?
第3期比第4期~第22期嗎?
ML089 發表於 2014-4-17 22:43



回ml大大  可以, 差一期沒關係 !
作者: duck_simon    時間: 2014-4-18 16:37

回復  duck_simon
試試看
GBKEE 發表於 2014-4-18 09:27



回GBKEE大大: 複製程式碼之後  還要設位格 (L27) =EX  嗎?
作者: GBKEE    時間: 2014-4-18 16:46

回復 7# duck_simon
這是VBA 程式碼,你要去執行這程式.
作者: ML089    時間: 2014-4-18 17:31

回復 6# duck_simon

L27 =IF(OR(MMULT(1-ISERROR(MATCH(N(OFFSET(G27,-ROW($1:$20),{0,1,2,3,4},)),G27:K27,)),{1;1;1;1;1})>3),1,0)
往上複製
作者: duck_simon    時間: 2014-4-19 08:43

回復 8# GBKEE


感謝 超級大板主指導 ,謝謝 ~
作者: duck_simon    時間: 2014-4-19 08:44

回復 9# ML089


    感謝 ML089大大, 真厲害 , 我看了都頭暈  謝謝 ~
作者: ML089    時間: 2014-4-20 20:41

回復 11# duck_simon

如果G:K的數字是不重複的時,可以用COUNTIF來處理,公式計算方式與5樓GBKEE超板的VBA式一樣的,可以對照使用

L27  =IF(OR(MMULT(COUNTIF(G27:K27,N(OFFSET(G27,-ROW($1:$20),{0,1,2,3,4}))),{1;1;1;1;1})>3),1,0)




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