• ベストアンサー

エクセルExcelでの空白を詰めてのデータ抽出の方法

ぜひ力を貸してください(>_<) Sheet1は入力専用で A列は日付で固定、B列に入力をします。B列は空白が多いです。  A  B 7/20 7/21 160 7/22 7/23 230 7/24 185 7/25 これをSheet2にB列の空白を詰めて 日付順に表記させたいです  A  B 7/21 160 7/23 230 7/24 185 Sheet2の関数式を教えていただきたいです よろしくお願いいたします

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

こういうイメージ的に、セルの位置を動かすタイプの課題は フィルタ、フィルタオプションの設定などがお勧め。 関数では苦手なものです。式が複雑になったり、作業列を使ったりとね。 作業列を使う方法 例データ Sheet1 のA1:C7(C列は関数を入れた結果) A列   B列   C列 日付 計数 連番 7月20日 7月21日 160 1 7月22日 7月23日 230 2 7月24日 185 3 7月25日 C2の式は =IF(B2="","",COUNT($B$2:B2)) 下方向に式を複写 ーーー Sheet2に行って A1の式は =INDEX(Sheet1!$A$1:$B$100,MATCH(ROW(),Sheet1!$C$1:$C$100,0),COLUMN()) B1に式を複写 A1:B1をA3:B3まで式複写 結果 2008/7/21 160 2008/7/23 230 2008/7/24 185 自称imogasi方式 #N/Aを出ないようには =IF(ROW()>MAX(Sheet1!$C$1:$C$100),"",INDEX(Sheet1!$A$1:$B$100,MATCH(ROW(),Sheet1!$C$1:$C$100,0),1))

yosinco
質問者

お礼

大変参考になりました 作業列でいきます 感動しています #N/Aが出ないようで 若干修正 下記で解決 =IF(ROW()>MAX(Sheet1!$C$1:$C$100),"",INDEX(Sheet1!$A$1:$B$100,MATCH(ROW(),Sheet1!$C$1:$C$100,0),COLUMN()) )

その他の回答 (1)

  • wisemac21
  • ベストアンサー率39% (171/429)
回答No.1

A1に =INDEX(Sheet1!A$1:A$6,SMALL(IF(Sheet1!$B$1:$B$6<>"",ROW(Sheet1!$B$1:$B$6)),ROW(Sheet1!A1))) Crtl+Shift+Enterで確定する 下、右へコピー

yosinco
質問者

お礼

すいませんダメでした 私の理解力不足だと思われます ご尽力感謝いたします

関連するQ&A

専門家に質問してみよう