Board logo

標題: 儲存格排顯示 [打印本頁]

作者: shan0948    時間: 2021-3-8 17:59     標題: 儲存格排顯示

請問各位先進,小弟有個問題要如何簡化或修改設定函數,詳如附檔,謝謝感恩!
[attach]33107[/attach]
作者: shan0948    時間: 2021-3-10 19:30

請問各位先進對於小弟的檔案函數公式有無較簡化或其他公式,請賜教,謝謝!
作者: 准提部林    時間: 2021-3-11 12:17

陣列公式(三鍵)
=INDEX(C:C,SMALL(IF(ISERROR(0/(COUNTIF(OFFSET(D$3,ROW($1:$99),,,4),"中")=0)/(C$4:C$99<>"")),4^8,ROW($4:$99)),ROW(A1)))&""
作者: shan0948    時間: 2021-3-11 13:47

回復 3# 准提部林


   准大,您的一個公式中只要修改一個字的動態項目,就可以適用其他的情況,真的簡化很多,謝謝指教!
作者: shan0948    時間: 2021-3-11 14:41

回復 3# 准提部林


   准大好,如果這公式同時要二個動態項目,如"中"和"康" ,請問公式要如何修改,謝謝感恩!
作者: 准提部林    時間: 2021-3-11 20:08

回復 5# shan0948


=INDEX(C:C,SMALL(IF(MMULT(1-ISERR(0/(FIND(D$4:G$28,"_中康")>1)),{1;1;1;1})+(C$4:C$28="")=0,ROW($4:$28),4^8),ROW(A1)))&""
作者: shan0948    時間: 2021-3-11 20:37

回復 6# 准提部林


    准大晚安,果然多一個變數就變的較複雜了,准大真是厲害,小弟的問題全解決了,謝謝指導!
作者: Andy2483    時間: 2023-12-4 09:14

謝謝論壇,謝謝各位前輩
後學藉此帖練習陣列,學習方案如下,請各位前輩指教
執行前:
[attach]37100[/attach]

執行結果:
[attach]37101[/attach]


Option Explicit
Sub TEST()
Dim Brr, Crr, i&, j%, R&, T$
'↑宣告變數
Brr = Intersect(Range([A1], ActiveSheet.UsedRange), [A:G])
'↑令Brr變數是 裝盛指定儲存格值的二維陣列
ReDim Crr(1 To 1000, 1 To 4)
'↑宣告Crr變數是二維 空陣列
For i = 4 To UBound(Brr)
'↑設順迴圈!i從3到Brr陣列縱向最大索引列號
   If T <> Trim(Brr(i, 1)) And Trim(Brr(i, 1)) <> "" Then T = Trim(Brr(i, 1))
   '↑如果T變數與 i迴圈列第1欄Brr陣列值(且不是空值)不同??就令T是該值
   If Trim(Brr(i, 3)) = "" Then GoTo i01
   '↑如果姓名欄是空的? True就跳到標示 i01位置繼續執行
   For j = 4 To 7
   '↑設順迴圈!j從4到7
      If InStr("/中/康/", "/" & Trim(Brr(i, j)) & "/") Then GoTo i01
      '↑如果 動態欄格裡是"中"或"康"? True就跳到標示 i01位置繼續執行
   Next
   R = R + 1
   '↑令R變數累加 1
   Crr(R, 1) = Brr(2, 1)
   '↑令R變數列第1欄Crr陣列值是 樓層
   Crr(R, 2) = T
   '↑令R變數列第2欄Crr陣列值是 房號
   Crr(R, 3) = Brr(i, 2)
   '↑令R變數列第3欄Crr陣列值是 序號
   Crr(R, 4) = Brr(i, 3)
   '↑令R變數列第4欄Crr陣列值是 姓名
i01: Next
[L:O].ClearContents
'↑令結果欄清除內容
If R = 0 Then Exit Sub
'↑如果R變數是 0(代表沒有符合的資料),就結束程式執行
[L4].Resize(R, 4) = Crr
'↑令指定儲存格擴展剛好的範圍儲存格值以Crr陣列值帶入
End Sub




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