iT邦幫忙

1

EXCEL 表格中自動判斷並自動跳列

求各位大神幫忙,找了很久資料還是找不到(可能是不知道如何搜關鍵字)
我的需求是有兩個報表 兩者皆有順序的(報表一二A行皆為公司名稱)
https://ithelp.ithome.com.tw/upload/images/20180721/201107266kjyTEpjqt.png

https://ithelp.ithome.com.tw/upload/images/20180721/20110726crjsHoidcm.png

我要將報表二所有值放到報表一裡
(報表二A值對應報表一B值 H值對應到I值 即都右移一格)
(報表二都設有公式計算放進去的值 這不用在意)

可是報表二會少幾間公司的列,但仍舊有順序
我是想要若放入值後,報表一的A、B值若相同則不用換列
若A、B值不同(即公司不對應 則自動跳一列,這樣資料才能正確)

最終報表一會變成這樣
https://ithelp.ithome.com.tw/upload/images/20180721/20110726IAJz6X4gmK.png

後面的值都有公式計算不用在意,主要是比對A、B值後 若不符則自動跳列
而不需手動再跳一列 而是一複製貼上完就是完整報表三了 另外我用的是2013版本

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
paicheng0111
iT邦大師 5 級 ‧ 2018-07-21 07:57:52
最佳解答

in 報表一 B1, write =INDEX(報表二!A:A,MATCH($A1,報表二!$A:$A,0)), then press enter.
drag B1 down and right.


在報表一的B1儲存格中寫下=INDEX(報表二!A:A,MATCH($A1,報表二!$A:$A,0))然後按下Enter
B1儲存格的填滿控點往右往下填滿。

看更多先前的回應...收起先前的回應...
leo840015 iT邦新手 5 級 ‧ 2018-07-21 10:59:47 檢舉

不好意思,本身不是做資訊業的,代父親工作上 發問
請問可以說一下實際操作方法嗎? 是不是要用EXCEL VBA呢

不需要VBA
我把答案改寫為中文
另外,報表一與報表二都在同一個活頁簿中嗎?

leo840015 iT邦新手 5 級 ‧ 2018-07-21 21:43:59 檢舉

是的 是在同一個活頁簿中 我按下ENTER之後他要求我找檔案

leo840015 iT邦新手 5 級 ‧ 2018-07-21 22:06:36 檢舉

我要篩選完之後的列 後面的(值)也要放到儲存格裡面
(報表二B行值對應到報表一C行值類推下去)
然後我報表一C行以後都設有將放入的數值做計算的公式

我按下ENTER之後他要求我找檔案

這表示你在題目中所指的報表二,其工作表的名稱並非報表二,你可以自己把工作表的名稱(例如叫做工作表2)找出來,然後替換。

leo840015 iT邦新手 5 級 ‧ 2018-07-23 00:44:14 檢舉

非常感謝

所以問題解決了嗎?
記得在解答中選最佳解答

1
jhit03
iT邦新手 4 級 ‧ 2018-07-21 19:05:49

=IF(ISNA(VLOOKUP(A1,工作表2!A:A,1,FALSE)),"",VLOOKUP(A1,工作表2!A:A,1,FALSE))

打在第一格,往下拉

看更多先前的回應...收起先前的回應...
leo840015 iT邦新手 5 級 ‧ 2018-07-21 21:49:14 檢舉

你好 請問這樣打完的話 工作表二的所有資料都會移到工作表一嗎?
因為我下拉之後 篩選完的列 後面儲存格都沒有跟著貼上來

leo840015 iT邦新手 5 級 ‧ 2018-07-21 21:56:07 檢舉

不好意思 可能是我發問文章表達有點問題
我要的是篩選完之後的列 後面的(值)也要放到儲存格裡面
(報表二B行值對應到報表一C行值類推下去)
然後我報表一C行以後都設有將放入的值計算的公式

因為我下拉之後 篩選完的列 後面儲存格都沒有跟著貼上來

這是因為VLOOKUP的第三個參數被鎖死在1,所以不會跟著連動。
這是我不喜歡VLOOKUP函數的理由之一。

jhit03 iT邦新手 4 級 ‧ 2018-07-22 18:43:48 檢舉

其實我看不太懂你意思
我猜是要看你報表二到底有幾行的資料要複製
假如有三行A~C
第一行要改
=IF(ISNA(VLOOKUP($A1,工作表2!$A:$C,1,FALSE)),"",VLOOKUP($A1,工作表2!$A:$C,1,FALSE))
第二行要改
=IF(ISNA(VLOOKUP($A1,工作表2!$A:$C,2,FALSE)),"",VLOOKUP($A1,工作表2!$A:$C,2,FALSE))
第三行要改
=IF(ISNA(VLOOKUP($A1,工作表2!$A:$C,3,FALSE)),"",VLOOKUP($A1,工作表2!$A:$C,3,FALSE))
只改第一列,然後都往下拉

jhit03 iT邦新手 4 級 ‧ 2018-07-22 18:48:56 檢舉

其實pcw大大的方法也很高明,可以做更多應用,但會用的人好像不算多
所以你也可以用pcw大大的方法應該可以做到的,只是他沒有針對找不到情況#N/A做處理,你用pcw大大的方法,加上像我用IF(ISNA(判斷就可以

leo840015 iT邦新手 5 級 ‧ 2018-07-23 00:44:03 檢舉

好的 非常感謝! 如果真的有不懂再來請教你們

leo840015 iT邦新手 5 級 ‧ 2018-07-23 03:06:14 檢舉

我是要將算出的列,放入工作表二對應的值到後面儲存格
可是我這樣寫的話 資料會有錯誤
https://ithelp.ithome.com.tw/upload/images/20180723/20110726TRso0yknyW.png

請問該怎麼寫才可以讓放入的數字正確呢?

以下是我要的正確報表(我數字是用手打的)
https://ithelp.ithome.com.tw/upload/images/20180723/2011072604ij882maA.png

jhit03 iT邦新手 4 級 ‧ 2018-07-23 08:08:03 檢舉

我後來回覆的那三行,應該可以做到,至於你寫的那方法,我也覺得不行

leo840015 iT邦新手 5 級 ‧ 2018-07-23 12:29:02 檢舉

有了 謝謝!

修改 jhit03 的三行,
ISNA()要找陣列中的第一欄,所以第一個VLOOKUP()的第三個參數要填1

假如有三行A~C
第一行要改
=IF(ISNA(VLOOKUP($A1,工作表2!$A:$C,1,FALSE)),"",VLOOKUP($A1,工作表2!$A:$C,1,FALSE))
第二行要改
=IF(ISNA(VLOOKUP($A1,工作表2!$A:$C,1,FALSE)),"",VLOOKUP($A1,工作表2!$A:$C,2,FALSE))
第三行要改
=IF(ISNA(VLOOKUP($A1,工作表2!$A:$C,1,FALSE)),"",VLOOKUP($A1,工作表2!$A:$C,3,FALSE))

我要發表回答

立即登入回答