人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Excel2000で、下記のように項目毎に日付が入っている表を、

| 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

のようにまとめるのを「マクロを使わずに」行うことは出来るでしょうか?

●質問者: stealthinu
●カテゴリ:コンピュータ
✍キーワード:マクロ
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● nankichi
●2ポイント

http://www.shuiren.org/chuden/teach/hidemaru/seiki/index-j.html

秀丸エディタを使いこなす ―正規表現―インデックス――

まず、やりたいことがわかりません。

A-C列に日付をあるルールにのっとってならべたいのか?

一番よくわからないのが、要素の数が変わっている点。もと3つある日付データが二つになっているので。。。。

単に空白をつめるのなら、excelでやるより秀丸等エディタでやった方が効果的です。

excelからカット&ペーストすると、セルの区切りはtabになるので、

¥t¥t

を¥t

に置換する、などします。

◎質問者からの返答

Aは11/1と11/2に存在

Bは11/1と11/3に存在

Cは11/2のみに存在

という具合に、項目毎に記入していったものを、違うシートなどでまとめて表示させたいのです。

実際にはもっと多数の項目と、年間を通した日付になります。

わかりにくい書き方ですみません。


2 ● きゃづみぃ
●3ポイント

http://www.hatena.ne.jp/awindow?

マクロを使わない場合は、手動で行うしかないですね。

上の表で、Bの2行目(11/1の下)のセルを削除します。

削除時、上方向にシフトとします。

次に Cの1行目も同様な処理を行います。

それを空白のセルの個所、全部 行えば、下記の表になるでしょう。

◎質問者からの返答

結局空白のセルを消して上に詰める、ことをマクロや手動ではなく、自動でできないか、ということになります。


3 ● きゃづみぃ
●15ポイント

http://arena.nikkeibp.co.jp/tec/excel/20040309/107640/

空白行だけを一気に削除 - デジタル - 日経トレンディネット

空白セルを一括で選択する方法がありました。

まず、範囲を指定します。

次に

編集、ジャンプ

セル選択で

空白セルをクリックして OKとします。

これで、空白セルだけが選択されますので、

この状態で

右クリックして 削除、上方向にで いいでしょう。

◎質問者からの返答

この操作でほとんどOKです。

一番良いのは、自動的に他のシートにこの状態が作られる、というのですがさすがにそれは無理っぽいですね。


4 ● sandaler
●10ポイント

http://ask.jp/

Ask.jp

URLはダミーです。

オートフィルタで「空白以外のセル」を選択して1列ずつコピペしてください。

不細工でおすすめしませんが、手動よりははるかに早いでしょう。

◎質問者からの返答

オートフィルタも惜しいです。

各行をそれぞれ空白以外のセルを選択してくれれば良いのに…


5 ● SigZ
●50ポイント

http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/MAX/max-nai...

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 などのように絶対番地にしておくことをお忘れなく。

◎質問者からの返答

これでやりたいと思っていたことが完全に出来ました。

ありがとうございます!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ