Board logo

標題: [發問] 請問 搜尋一固編號 至 空白 再往下搜期搜尋 取出工作表全部相同標號之資料 [打印本頁]

作者: mycmyc    時間: 2012-4-23 17:28     標題: 請問 搜尋一固編號 至 空白 再往下搜期搜尋 取出工作表全部相同標號之資料

本帖最後由 mycmyc 於 2012-4-23 17:33 編輯

請問 搜尋一固編號 至 空白   再往下搜期搜尋一固編號 至 空白間 並取出工作表全部相同標號之資料

運用 函數 搜尋 取出 資料
如圖 紅色 資料 取出 到另工作表

用 科目代號  6180 搜尋 至 空白行   再往下搜期6180 至 空白行  取出工作表全部6180至 空白行 之資料

試了很多方法多失敗  請問  運用 函數  有辦法   做這一搜尋嗎?  謝謝  麻煩指教

[attach]10610[/attach][attach]10610[/attach][attach]10610[/attach]0



[attach]10611[/attach]
作者: register313    時間: 2012-4-23 23:06

回復 1# mycmyc

輔助欄
E2=IF(B2="","",IF(OR(B2=6180,E1="Y"),"Y",""))   往下複製
G2=IF(INDEX($A:$D,SMALL(IF($E$2:$E$25="Y",ROW($E$2:$E$25),65536),ROW(A1)),COLUMN()-6)="","",INDEX($A:$D,SMALL(IF($E$2:$E$25="Y",ROW($E$2:$E$25),65536),ROW(A1)),COLUMN()-6)&"")   陣列公式  往右複製 往下複製
[attach]10618[/attach]
[attach]10619[/attach]
作者: mycmyc    時間: 2012-4-23 23:35

本帖最後由 mycmyc 於 2012-4-23 23:37 編輯

回復 2# register313

感謝 register313  大大指導


輔助欄
E2=IF(B2="","",IF(OR(B2=6180,E1="Y"),"Y",""))   
真是巧思   讓複雜問題單純化  

我一直想用 , 一行解決,  但多無法達成   
謝謝你
G2=IF(INDEX($A:$D,SMALL(IF($E$2:$E$25="Y",ROW($E$2:$E$25),65536),ROW(A1)),COLUMN()-6)="","",INDEX($A:$D,SMALL(IF($E$2:$E$25="Y",ROW($E$2:$E$25),65536),ROW(A1)),COLUMN()-6)&"")  
可以有 更精簡 作法嗎?  
對不起  冒昧 要求  
謝謝你
作者: register313    時間: 2012-4-24 00:25

回復 3# mycmyc

G2=INDEX($A:$D,SMALL(IF($E$2:$E$25="Y",ROW($E$2:$E$25),65536),ROW(A1)),COLUMN()-6)&""   陣列公式
作者: mycmyc    時間: 2012-4-24 00:30

回復 4# register313

感謝 register313 大大
謝謝
小弟不才  需要時間消化
但 由衷感謝 大大 幫忙

謝謝你
作者: Hsieh    時間: 2012-4-25 15:11

本帖最後由 Hsieh 於 2012-4-25 15:19 編輯

回復 2# register313


    美中不足,(如圖)
[attach]10660[/attach]
[attach]10662[/attach]
作者: mycmyc    時間: 2012-4-25 18:50

本帖最後由 mycmyc 於 2012-4-25 18:55 編輯

回復 6# Hsieh

感謝 Hsieh  大大
妳厲害看出 小弟 需求
搜尋 並把整個 收支 整個 列出
並說明了  遺漏 之處
如 B24 即  遺漏 之處
感謝
但小弟 有些不明白
COUNTIF(z,$F$1)>0
其中 Z  代表意思
INDIRECT(CHAR(COLUMN(B5)+64)&a)
&a  代表意思

還有  我沒能力 表妳函數  改成 在 Sheet2 列出
我 希望 結果 在Sheet2 列出
請妳指教  謝謝妳
作者: Hsieh    時間: 2012-4-25 20:05

回復 7# mycmyc
x、y、z、a都是定義名稱,作用儲存格位於第2列時,建立此4個名稱
1、取得A1到此列為止,最後一個文字位置,因為你的日期並非正確日期格式,是以文字串形成的資料,所以必須使用文字搜尋
x參照到公式
=LOOKUP("龘",Sheet1!$A$1:$A2,ROW(Sheet1!$1:2))
可改成
x參照到公式
=LOOKUP(2,1/(Sheet1!$A$1:$A2<>""),ROW(Sheet1!$1:2))
這樣可配合任何資料型態
2、本列以下到第2000列的B欄若為空白就傳回列號,求得這些列號的最小值,這樣可取得資料尾端。
y參照到公式
=MIN(IF(Sheet1!$B2:$B$2000="",ROW(Sheet1!$B2:$B$2000),""))
3、傳回每個區域範圍
z參照到公式
=INDIRECT("Sheet1!B"&x&":B"&y-1)
4、傳回E欄的所有數值
a參照到公式
=SMALL(Sheet1!$E$2:$E$2000,ROW(!A1))
5、E2公式=IF((B2<>"")*(COUNTIF(z,$F$1)>0),ROW(),"")
假如B欄不等於空白,而且所在列的連續資料範圍中含有搜尋準則F1的值,就傳回該列的列號。
6、Sheet2!A2公式=IF(ISERROR(a),"",INDIRECT("Sheet1!"&CHAR(COLUMN(A1)+64)&a))
如果超過Sheet1!E欄數值的數量,a就會是錯誤值,所以判斷a為數值就帶入INDIRECT("Sheet1!"&CHAR(COLUMN(A1)+64)&a)這段來計算
CHAR(COLUMN(A1)+64)這會傳回字串"A",向右複製時就成為CHAR(COLUMN(B1)+64),傳回字串"B",以此類推
INDIRECT是以儲存格參照字串來傳回該位置,所以,("Sheet1!"&CHAR(COLUMN(A1)+64)&a就等於字串"Sheet1!A2"

[attach]10665[/attach]
作者: mycmyc    時間: 2012-4-25 22:54

本帖最後由 mycmyc 於 2012-4-25 23:20 編輯

回復 8# Hsieh

感謝    Hsieh 大大  撥空 做詳細解說
原來 x、y、z、a都是定義名稱   
對不起 沒詳細 檢查
INDIRECT("Sheet1!"&CHAR(COLUMN(B1)+64)&a)
我有在程式列 一一查詢  
對&a 不明白  所以括號錯放位置   而不成功

感謝 你一一解釋  我無法馬上理解
我得 一一嘗試 謝謝你
不懂之處 在煩請你 指導

謝謝你  感恩




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