アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセル関数を使って空欄を除き縦に並び替える また上の行の日付も反映させることは出来ますでしょうか?
マクロを使わないで関数だけで出来る方法はありますでしょうか?

7/1 7/2 7/3 7/4
A B C

7/1 A
7/2 B
7/4 C

上記のように抽出したいのですが教えて頂けますか?
宜しくお願いします。

質問者からの補足コメント

  • すいません。簡単に書いてしまいました。
    詳しく書きます。
    スプレッドシートでブック1のA1から横並びに7/1〜7/31までの日付が入力済みがあり、A2から日付の下に店舗名を入力していきます。
    ブック2に交通費表があり店舗名が入力されている日付をA1から縦に詰めてB1から店舗名を反映させたいです。
    ブック1のC1には日付の7/3は記入があるがC2の店舗名は未記入の場合、ブック2の交通費表には3日以外の日付と店舗名を詰めて反映させたいとおもいっています。
    スプレッドシート内のブック間のデータ読み込みは書けたのですが上記の関数が調べても分からず。
    お力をお借りできたらと思います。

      補足日時:2017/07/30 09:19

A 回答 (2件)

「空欄」がどのような状態にあって、どう除くのか、質問文から読み取れないのですが、


とりあえず…

対象の範囲を選択してコピーし、
「形式を指定して貼り付け」から「行列を入れ替える」
「オートフィルタ」を設定し「空欄」を選択。
表示されたデータを削除して詰める。

…という操作をするだけなんですけど、どうしても関数が必要なのでしょうか。


セルの縦の位置、横の位置をそれぞれ調べる関数は、
ROW関数とCOLUMN関数です。
 =ROW()
 =COLUMN()
のように括弧の中に何も指定しないと、その関数が使われているセルの行番号、列番号がそれぞれ返って来ます。
 =ROW(A1)
 =COLUMN(B1)
 のように括弧の中にセル番地を指定するとそのセルの行番後、列番号がそれぞれ返って来ます。
これをINDEX関数やOFFSET関数で参照するセルを指定することに使えば良いでしょう。

A1セルからJ2セルまでデータが並び、A3セルからB12セルに反映させるなら、
A3セルに
 =INDEX($A$1:$J$2,1,ROW(A1))
と入力してA3セルをB3セルに複製し、A3セルとB3セルを12行まで複製すれば、行列を入れ替えたデータが出来上がります。
あとはオートフィルタで空白セルを表示しないようにすれば、まあ、見た目は完成。
    • good
    • 0

こんにちは!



↓の画像のように元データはSheet1にあり、Sheet2に表示するとします。

Sheet2のA1セル(セルの表示形式は「日付」にしておく)に
=IFERROR(INDEX(Sheet1!$1:$1,SMALL(IF(Sheet1!$2:$2<>"",COLUMN($1:$1)),ROW(A1))),"")

※ 配列数式なのでCtrl+Shift+Enterで確定!

B1セル(配列数式ではない)に
=IF(A1="","",HLOOKUP(A1,Sheet1!$1:$2,2,0))

という数式を入れフィルハンドルで下へコピー!
これで画像のような感じになります。m(_ _)m
「エクセル 空白を除き縦に並び替え、上の行」の回答画像2
    • good
    • 0
この回答へのお礼

助かりました

助かりました!!!
ありがとうございます!!
また分からないことあったら宜しくお願いします!

お礼日時:2017/07/30 19:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!