| A B C
----+-----------------
11/1|11/1 11/1
11/2|11/2 11/2
11/3| 11/3
↓
A B C
-----------------
11/1 11/1 11/2
11/2 11/3
のようにまとめるのを「マクロを使わずに」行うことは出来るでしょうか?
http://www.shuiren.org/chuden/teach/hidemaru/seiki/index-j.html
秀丸エディタを使いこなす ―正規表現―インデックス――
まず、やりたいことがわかりません。
A-C列に日付をあるルールにのっとってならべたいのか?
一番よくわからないのが、要素の数が変わっている点。もと3つある日付データが二つになっているので。。。。
単に空白をつめるのなら、excelでやるより秀丸等エディタでやった方が効果的です。
excelからカット&ペーストすると、セルの区切りはtabになるので、
¥t¥t
を¥t
に置換する、などします。
マクロを使わない場合は、手動で行うしかないですね。
上の表で、Bの2行目(11/1の下)のセルを削除します。
削除時、上方向にシフトとします。
次に Cの1行目も同様な処理を行います。
それを空白のセルの個所、全部 行えば、下記の表になるでしょう。
結局空白のセルを消して上に詰める、ことをマクロや手動ではなく、自動でできないか、ということになります。
http://arena.nikkeibp.co.jp/tec/excel/20040309/107640/
空白行だけを一気に削除 - デジタル - 日経トレンディネット
空白セルを一括で選択する方法がありました。
まず、範囲を指定します。
次に
編集、ジャンプ
セル選択で
空白セルをクリックして OKとします。
これで、空白セルだけが選択されますので、
この状態で
右クリックして 削除、上方向にで いいでしょう。
この操作でほとんどOKです。
一番良いのは、自動的に他のシートにこの状態が作られる、というのですがさすがにそれは無理っぽいですね。
Ask.jp
URLはダミーです。
オートフィルタで「空白以外のセル」を選択して1列ずつコピペしてください。
不細工でおすすめしませんが、手動よりははるかに早いでしょう。
オートフィルタも惜しいです。
各行をそれぞれ空白以外のセルを選択してくれれば良いのに…
Small関数を使えばできます。
元データの表を表1、集計する表を表2とし、単純化するために項目Aについてのみ解説します。
表1の項目Aの日付が入力された範囲を B2:B31であると仮定すると、表2の先頭にはB2:B31の間に入力されている1番小さい値を参照できればいいわけですから
=small(B2:B31, 1)
という式になります。同様に表2の2番目には
=small(B2:B31, 2)
です。
これを単純に続けていけばいいのですが、=Small(B2:B31, n)の n にあたる数値を手入力するのは面倒です。このようなときはRow関数を応用します。
たとえば表2の先頭セル番地が A2 だったとすると、=Row()でそのセルが何行目かを取得できますから
=small(B2:B31, Row()-1)
とすれば、データ順位を手入力する必要がありません。
ただし、このままでは=Small(B2:B31,Row()-1)の値が取得できなかったときにエラーになります。これを回避するために If関数とIsError関数でエラー処理をします。
=If(IsError(Small(B2:B31, Row()-1))=True, ””, Small(B2:B31, Row()-1))
でほぼ期待通りの結果が得られると思います。
式をコピーするときは、表1の参照範囲 B2:B31 がずれないように範囲名をつけておくか、$B$2:$B$31 などのように絶対番地にしておくことをお忘れなく。
これでやりたいと思っていたことが完全に出来ました。
ありがとうございます!
Aは11/1と11/2に存在
Bは11/1と11/3に存在
Cは11/2のみに存在
という具合に、項目毎に記入していったものを、違うシートなどでまとめて表示させたいのです。
実際にはもっと多数の項目と、年間を通した日付になります。
わかりにくい書き方ですみません。