Board logo

標題: [發問] 關於儲存格資料擷取與轉換 [打印本頁]

作者: dodo234    時間: 2015-4-18 21:16     標題: 關於儲存格資料擷取與轉換

各位大大好:
想請教一個問題
我有一份資料兩個Sheet
裡頭有sheet1有1~2500筆的資料
需要轉換成Sheet2的形式
我目前是用OFFSET的函數
但是有個問題
當我刪除了Sheet1的單筆或部分資料後
序號就會錯亂了∼∼∼∼∼
例如:我刪除了Sheet1的序號2的資料
Sheet2的A501資料會排到501沒錯
但是D2的資料就會錯了∼∼仍然是序號501

雖然是1∼2500筆
因為裡面有些序號是不要的>   <
請問大大們這有什麼方式或是其他的函數可以解決刪除資料後讓序號正常排列的辦法麼??
不然∼我會排到瘋掉
在此也附上我目前做的檔案∼
還請各位高手大大能協助
在此先謝謝各位大大了∼∼∼
作者: dodo234    時間: 2015-4-18 21:34

不能在編輯了∼∼∼
我上船無片讓大大們看看好了∼
作者: tyrone123456    時間: 2015-4-18 23:05

這是你要的結果嗎?

[attach]20721[/attach]
作者: tyrone123456    時間: 2015-4-18 23:08

我把公式秀出來,左邊是刪除前,右邊是刪除後,你可以看到儲存格內的公式變化
PS:上面那篇的圖內公式打錯了,這張才對
[attach]20722[/attach]
作者: dodo234    時間: 2015-4-19 11:56

本帖最後由 dodo234 於 2015-4-19 11:58 編輯

感謝tyrone123456大的提供
但是我想做成的是(如圖)
左邊是刪除前∼右邊是刪除後這樣的樣式
不知EXCEL在擷取資料上可以做到這樣麼????
另外∼不知能否套用在OFFSET的函數裡呢???
或者是我擷取資料的函數用錯了>  <
主要我是想將2500筆一長串的資料
展成一張表這樣比較好比對
但是這連號的資料中又不是所有資料是我要的∼∼∼∼
作者: tyrone123456    時間: 2015-4-19 13:39

你的需求必須寫VBA程式才能達到,
因為當你刪除某一資料之後,他會出現一訊息問你要右邊或下面的資料移過來,但是移動過來的儲存格內並無任何公式,所以根本不可能做出任何動作,或者你去刪除原始資料的位置,但此處的儲存格公式會自動變更公式,所以也沒有辦法達到你的目標,故此我才說寫VBA程式才能達到你的目的
作者: tyrone123456    時間: 2015-4-19 13:57

想到寫法了
左區是假設原始資料,中間是變更的排列樣子,右邊則是把公式顯示出來,其中最後一個公式多加入判讀式是因為若無數值則顯示空白
[attach]20730[/attach]

你試試刪除一筆料,就會如你想要的改變
作者: dodo234    時間: 2015-4-19 17:19

回復 7# tyrone123456
tyrone123456您太神了∼∼∼∼
成功了耶∼∼∼∼^O^
但因為我對OFFSET函數用法不是很瞭解∼
可否方便與詢問
您所設定的
=OFFSET($A$2,ROW(I2)-2,0,1,1)與
=IF(OFFSET($A$2,ROW(I14)-2,0,1,1)>0,OFFSET($A$5,ROW(I14)-2,0,1,1),"")
內容是什麼意思呢?
我想說若我瞭解裡面的設定∼以後也許可以再更活用了∼∼∼
真的太謝謝tyrone123456大的大力協助了∼
2500筆的表格終於好了∼∼∼∼∼
作者: tyrone123456    時間: 2015-4-19 17:43

你試試看把我剛剛秀的資料再刪除兩筆,你就會看到不加if的差異
沒有if的話,你會看到G5儲存格顯示0,就不好看,若加上if,則可以將等於0的儲存格變成空白,頁面看起來就感覺好多了
作者: dodo234    時間: 2015-4-19 21:48

回復 9# tyrone123456
哦!!!原來如此∼∼
tyrone123456您真細心∼想到將頁面美化∼∼∼∼
我可以再問您
=OFFSET($A$2,ROW(I2)-2,0,1,1)
裡頭的ROW(I2)-2,0,1,1要怎麼解釋麼???
另外我想問一下ROW(I2)-2這運算式是怎樣才能知道的呢??
因為我每次寫這部份都寫不好∼不知道怎麼寫才能抓到我要的資料>  <
可否方便再教教我.......
作者: JBY    時間: 2015-4-19 22:15

本帖最後由 JBY 於 2015-4-19 22:16 編輯

回復 10# dodo234

[attach]20732[/attach]

1] D2,輸入陣列公式後 (一齊按 Ctrl + Alt + Enter 3鍵 ) 向下複製公式 :

=IFERROR(SMALL(IF(A$2:A$11<>"",A$2:A$11),ROW(1:1)),"")

2] F2,輸入陣列公式後 (一齊按 Ctrl + Alt + Enter 3鍵 ) 向下複製公式 :

=IFERROR(SMALL(IF(A$2:A$11<>"",A$2:A$11),ROW(6:6)),"")

3] E2, 輸入公式後 向右 G2 複製公式, 再向下複製公式 :

=IFERROR(VLOOKUP(D2,$A$2:$B$11,2,0),"")
作者: tyrone123456    時間: 2015-4-19 22:30

=OFFSET(C3,2,3,1,1)的意義是:以C3為起始點,往下兩格〈即C5〉,再往右3格〈即F5〉,至於後面兩個1的用途只是把F5的儲存格寬高資料抓取過來而已

[attach]20733[/attach]
作者: dodo234    時間: 2015-4-20 22:07

回復 11# JBY
謝謝JBY大的另一種作法∼∼∼∼
看來我函數真的要好好再學學才是:'(
作者: dodo234    時間: 2015-4-20 22:09

回復 12# tyrone123456
謝謝tyrone123456大的解說∼∼∼還有圖片文字解釋
我再研究好好加強看看∼∼∼∼




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