Excelで予定表を月単位で並べ替える方法

このQ&Aのポイント
  • Excelで作成した予定表を検索し、月ごとに並べ替える方法について教えてください。
  • 予定表をセル結合した状態で、特定のキーワードを検索すると、月ごとに並べ替えられますか?
  • Excelの予定表で、特定のキーワードを検索して月ごとに並べ替える方法を教えてください。
回答を見る
  • ベストアンサー

予定表を行事で検索、月ごとに並べ替える

いつもお世話話になっています。 Excelで作った予定表があるのですが、語句を検索、「月単位」で並べ替えをしたいのです。 A B C       D    E  F                       セミナー 1月 3日 元旦   初日の出    11日  成人の日 休日 2月 3日  節分   豆まき    11日  建国記念 デパート    20日  旅行   北海道    21日  旅行   札幌 3月 10日  美容院  9時    20日  セミナー 会館    25日  給料日  外食 4月 4日  お花見  外食     6日  入学式  13時 5月 1日  メーデー 集会     2日 セミナー  会館 A列に月、B列に日、C列に予定、D列に内容です。 A列は「月ごとにセル結合」がされています。 1月なら2行、2月なら4行、3月なら3行といった具合です。 F1に単語を入れて検索、仮にF1に「セミナー」と入力したときに(検索ボタンは作るか未定)、セミナーのある「3月・5月」を上位に、含まれていない1月・2月・4月を下位に「月単位を崩さずに」に並べ替えたいのです。 この場合だと、3・5・1・2・4月の順になります。 部分的にはできるのですが、「その語がどの月にあって、月ごとに並び替え」というのができなくて・・・。 よろしければ何かよいお知恵をお貸しください.よろしくお願いします。

  • quincy
  • お礼率90% (121/133)

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.3

#2です。 > C・D・Eのどこにあろうとも「A列に移動」なんて方法 こんな感じ? Sub bbb() Dim s As String, fAddress As String, fs s = ActiveSheet.Range("F1").Value If s = "" Then Exit Sub With ActiveSheet.Columns("C:E")  Set fs = .Find(what:=s, LookIn:=xlValues)  If Not fs Is Nothing Then   fAddress = fs.Address   Do    fs.EntireRow.Resize(1, 5).Select    'Selection.Copy    MsgBox Selection.Address    Set fs = .FindNext(fs)   Loop While Not fs Is Nothing And _         fAddress <> fs.Address  End If End With End Sub

quincy
質問者

お礼

大変ありがとうございます。何とかうまくいきました。本当におかげさまです。また何かありましたらよろしくお願いします。それにしても・・・・すぐに作ってしまって知識が深い方ですね。

その他の回答 (3)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.4

またまた、#2です。 ちょっと補足。 同じ月に何度も同じ単語が出た場合はコピーしない等の対応が必要ですね。 やはり元シートから見直した方が良いように思うけど、、、 あと、「マクロやVBA」の質問だとことわったうえでなら、コンピューター [家庭向け] > ソフトウェア > Microsoftアプリケーションのカテゴリーの方が見てる人も多いと思うのでレスがつきやすいと思います。 http://okweb.jp/oshiete.php3?c=232

参考URL:
http://okweb.jp/oshiete.php3?c=232
quincy
質問者

お礼

本当にいつもためになるアドバイスをありがとうございます。今後また質問があるときはそっちのカテゴリに行きたいと思います。ありがとうございました。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

ご質問のカテゴリーからVBAに関する事として、サワリだけ。 Sub aaa() Dim s As String, fAddress As String, fs s = ActiveSheet.Range("F1").Value If s = "" Then Exit Sub With ActiveSheet.Columns(3)  Set fs = .Find(what:=s, LookIn:=xlValues)  If Not fs Is Nothing Then   fAddress = fs.Address   Do    fs.Offset(0, -2).Resize(1, 4).Select    'Selection.Copy    MsgBox Selection.Address    Set fs = .FindNext(fs)   Loop While Not fs Is Nothing And _         fAddress <> fs.Address  End If End With End Sub サンプルで例にある表から検索した文字を含む月が選択出来ると思います。 あとは作業用シートを作成するなりしてカット&ペーストで並び替えて(結合したセルはソート出来ない)から、全体を元のシートに戻して、作業用シートを削除するような感じで書いていけば良いかと思います。ただ、並び替えを戻す処理とかを考えると非常に厄介です。 そもそも月と日を別に持つことも、セルを結合する事も含めてデータの持ち方に疑問を感じます。 普通に下記のようなデータにしてオートフィルタで「備考1」から「セミナー」で抽出すれば良いだけのような気がしますが、、、  年月日   備考1   備考2 2005/01/01  元旦    初日の出 2005/01/11  成人の日  休日 2005/02/03  節分    豆まき        ・        ・

quincy
質問者

お礼

昨日に引き続き回答をくださってありがとうございます。 わかりにくい例で申し訳ありません。 >そもそも月と日を別に持つことも、セルを結合する事も含めてデータの持ち方に疑問を感じます。 仰る通りなんです。実は他の方が作ったのですが、私も何で結合したんだろう、こんな風に作ったんだろうって思います。 Offsetだと、左に戻ってコピペですよね。 万が一「セミナー」がDもしくはEにあるかもしれないんです。そういう場合の時は、「自分の位置を割り出して、やっぱりA列に戻って、それからコピー」って方法を取るのがよいのでしょうか? C・D・Eのどこにあろうとも「A列に移動」なんて方法・・・・ありませんか?すみません、何度もお伺いして。よろしければお願いします。

  • nawano
  • ベストアンサー率27% (8/29)
回答No.1

Aの列に月/日と入力されれば 問題なくソート出来ると思いますが それがイヤならば一旦、A列の前に 一列挿入して、同様に月/日を入力し ソートします。 不要になったら月/日の列を削除します。 ソートはそろえたい列から表の範囲を 覆うようにドラッグします。

quincy
質問者

お礼

回答ありがとうございます。実はExcelVBAについてなのです。文字数制限にひっかって、大切なことを書き忘れてしまいました。本当にすみません。アドバイスありがとうございます。また何かありましたらよろしくお願いします。

関連するQ&A

  • エクセルで表の検索方法を教えてください。

    エクセルで表の検索方法を教えてください。 添付画像のように A1:D16 に表があります。 A18:D18 に1行のデータがあります。 このデータが、表の何番目にあたるのか検索する方法を知りたいです。 すぐに思いつくのは、作業列を1列用意し、そこにA列からD列の各行の値を結合して表示させ、作業列の値で検索することですが、それ以外の関数での方法を知りたいです。

  • 複数表から検索値を検索し、検索値の存在した表から結果を求める方法

    ソフトはエクセルの2000です。 やりたいことは、 「複数表から検索値を検索し、検索値の存在した表から値を抽出する方法」もしくは 「A2:H11から検索値を検索し、検索値から○行下の値を抽出する方法」 になると思います。 以下に例を記入します。 下記のように「項目」と「名称」2列で構成された表を下に作成しているとします。       A列   B列    C列   D列   E列    F列   G列   H列 1行 2行 3行   社名 ○○○社       社名 □□□社       社名 ◆◆◆社 4行   場所 ○○○県       場所 □□□県       場所 ◆◆◆県 5行   件名 ○○作業       件名 □□作業       件名 ◆◆作業 6行   担当 ○○○殿       担当 □□□殿       担当 ◆◆◆殿 7行    8行   社名 ×××社       社名 △△△社 9行   場所 ×××県       場所 △△△県 10行   件名 ××作業       件名 △△作業 11行   担当 ×××殿       担当 △△△殿 A1のセルに「△△△社」と社名を入力すると、B1セルに場所の「△△△県」が表示するようにしたいのです。 複数のIF関数で括れば可能だとは思いますが、表の数が制限され、関数式も長くなるためIF関数の使用は控えたいと思っています。 また、マクロを使わない方法でお願いします。 可能なら関数で、関数で不可能なら名前の定義を使用した方法を教えてください。よろしくお願いします。

  • エクセルで行から数値を検索し、検索した数値のある列

    エクセルで行から数値を検索し、検索した数値のある列から左側の全ての合計を求めたいです。   A B C D E F 1  3 4 8 9 11 22 ←数字は隙間なくあるが、値がバラバラ(ただし昇順) 2 3  2~6行には色々な数字がまばらにある 4 5 6 1行目から検索したい数→10(別のセルで数式結果として出た数) ズレてるかもしれませんが・・・ E1セルに書かれている「11」の数字より前のD列、 A~D列の2行目~6行目の合計を各行ごとに別々に出していきたいです、どうしたらいいでしょうか また、表は行も列もデータを追加していく予定です

  • エクセルにおいて、検索した個数表示について

    表を作るのに困っていますので、よろしくお願いします。 例えば、 A列A1~A20までのセルに、1~3までの数字がランダムに入っています。 BとDとF列のセルに、あ~おまでの文字が、ランダムに入っています。 A列の数字が1のとき、その行のB、D、Fに、「あ」が何個、「い」が何個、「う」が何個・・・・。 A列の数字が2のとき、その行のB、D、Fに、「あ」が何個、「い」が何個、「う」が何個・・・・。 A列の数字が3のとき、その行のB、D、Fに、「あ」が何個、「い」が何個、「う」が何個・・・・。 という表を作りたいのですが、どうしたら良いでしょうか。 よろしくお願いします。

  • エクセルの表計算で、検索値が含まれる列を検索後、同じ列の違う行にある数

    エクセルの表計算で、検索値が含まれる列を検索後、同じ列の違う行にある数値を返す場合はどのようにすればいいのでしょうか? ※下表を例としますと、検索値 150 が含まれる1行目のC列を検出後、同じ列の2行目に入力されている 4300 を返す場合の関数式を教えてください。     A      B         C        D 1   1~50  51~100   101~250   251~500 2   5000    4500      4300     4000

  • セルの結合がされた表をHLOOKUPで検索する場合について

    Excel初心者です。質問があります。 下記のような表があります       A列   B列   C列   D列 行番号1    12/1       1/1 行番号2  件数   金額  件数   金額    行番号3   2    100   3    200 行番号5   1/1 ここでHlookupを使って下記のように検索します A5に1/1と入力して 件数を検索するには   =HLOOKUP(A5,A1:D3,3) → 3 ここまではいいのですが 金額の「200」を検索するにはどのような関数を使えばよいのでしょうか? ※行番号1の「12/1」と「1/1」はセルの結合をしており 「12/1」のセルはA1、「1/1」のセルはC1になっています。 HLOOKUP関数とVLOOKUP関数又はCOLUMN関数を組み合わせれば出来るのでしょうか よろしくお願いします。

  • Excel関数 表の中のデータを検索して表示したい

    検索範囲が列や行の一方向でないため行き詰まってしまいました。 いい式の組み立てがありましたら、教えていただけますようお願いいたします。 クラスのリスト A B C D 1 1組 田中 吉田 織田 伊藤 2 2組 坂本 神奈 千葉 小笠原 3 3組 浜田 金沢 岡本 多田 A列の氏名を元にB列にクラスを表示したい A   B 多田 3組 伊藤 1組 ・ ・ ・ 検索のキーとなる氏名に重複はありません。 =INDEX($B$1:F3,IF(COUNTIF($B$1:$F$3,A6),ROUND(MOD(SUMPRODUCT(($B$1:$F$3=A6)*(ROW($B$1:$F$3)+ROW($B$1:$F$3)/1000)),1)*1000,),""),1) 該当の文字が入力されている行番号を検索してINDEXをつかって表示する式をつくりました。 しかし、リストの表が1行目から作成されていないとエラーになってしまいます。 なにかいい式はないでしょうか?

  • エクセルでどう作ったらよいのでしょうか?(表です)

     <表1>                      <表2>    A           B        C     D    E   F・・・   1   月日          金額           4月  5月 6月・・・・              2  2007.4.5     100,000 3  2007.6.28    250,000 4     :            : :     :            :  --------------------------------- 上記のような表があるとします。 A2の場合は4月分と考え、A3の場合は6月分と考えます。 A列の月が4月分なら(表2の)同じ行の4月のところに、 6月分なら6月のところにB列の金額が入るようにしたいのです。 つまりA2の場合は、D2に100,000と入るようにするにはどのようにしたらよいのでしょうか? 教えて下さい。よろしくお願い致します。

  • 品名が変わる所で空白行がある表で在庫数を品名単位で計算したい

    品名が変わる所で空白行がある表で在庫数を品名単位で計算したい 1.CSVファイルがあります。   (データはでたらめに入っています。)画像(1)   A列→半角の1か2   B列→日付   C列→品名   D列→数量 2.これをエクセルで開いて   C列、B列の優先順位で昇順で並べ替えます。画像(2) 3.C列の値が変わった所で空白行を入れます。画像(2)   (品名単位で区分けされました。) 4.A列の値が2の場合D列の値を切取りE列に貼付けます。   画像(3)   D列が(入)   E列が(出)   になります  ここまでのマクロは完成しています。 5.F列の全ての行にD列、E列の結果から計算結果で出た残数を   入れたい。(D,E列が空白の行は不要)画像(4)   D列は上の行のF列の値に加算しその値をFへ   E列は上の行のF列の値から減算しその値をFへ   例:F3=F2+D3-E3    みかんはみかんだけで入出後の残数を、   りんごはりんごだけで入出後の残数を行ごとに入れたい。   かつ計算式は残したくない。 さらに、 CSVファイルは毎日行数が増え1週間で約50,000行になるので このマクロを使い画像3の状態にして毎週金曜日に保存してます。 元のCSVファイルは削除します。 翌週にはまた新たなCSVファイルに翌週のデータがたまります。 先週の分の品名単位の最終行だけをコピーして 翌週のCSVファイルを編集するさいに合流させ、 NO.2の並べ変えの時に品名単位で一番上の行に挿入したいです。 で同じようにNO.5を行いたいです。 画像(4)の場合6,9,14行目を翌週のCSVファイルに合流させる。 (合流だけできればNO.2の作業で品名単位で  必ず一番上になりますので抜取りと合流だけしたい) 品名は1週のファイル内で約5,000種類です。 よって50,0000行が編集で55,000行に増加し その中の5,000行は空白行(品名が変わるたびに挿入されている。) (1)NO.5の画像(3)から画像(4)にするマクロ(計算式の入れ方?)    (空白行には入れない) (2)完成したファイルの品名単位の最終行を抜き出し    次のファイルを作成する時に合流させるマクロ(画像(6)) を教えてください。 

  • 1.excelで年間予定表と別シートの月間予定表が連動した予定表を作成

    1.excelで年間予定表と別シートの月間予定表が連動した予定表を作成したい。 2.別シートの月間予定表(1年分を横に並べている)では、月毎に (1)当月分の左端に年間予定表の当月分、 (2)その右に、年間予定表の予定項目ごとに[列を与えて]整理して予定を書いている。 3.月間予定表の(1)を年間予定表と連動させたい。 即ち、年間予定表の予定項目を追加、書き換え、削除したとき、月間予定表の(1)が自動的に訂正されるようにしたい。 4.年間予定表は6月分をA4横1ページに、月間予定表は一月分をA4縦1ページにプリントアウトしている。画面で見るだけではなく、プリントも利用している。  年間予定が時々変更になり、それに合わせて月間予定を書き変えねばならないので、連動すれば大変助かります。よろしくお願いします。 以下は多くの人にとって読む必要はないと思います。 ご助言の参考になればと思い、今使っている年間予定表・月間予定表の実態を示したものです。 ☆ 年間予定表は1行目に月(1月から12月) 2行目以下は月ごとに、最左端(1月の場合A列)に日付、その次の列(1月の場合B列)に曜日 その次の列(1月の場合C列)に年間予定項目(例:箱根ドライブ、九州ドライブ、自治会総会…)を記入する。 ☆ 別シートの月間予定表: ア:各月ごと(例えば1月)の最初の3列は年間予定表(例えば1月)の月名、日付、曜日、年間予定項目をカット&コピーで張り付ける。  又は、=関数を使う。即ち月間予定表のa列1行目に=を使って、年間予定表のa列1行目をもってくる。月間予定表のa列1行目を31日までドラッグして年間予定表に同期させる。同様のことを、残りの2列についても実行する。(この方法は1月分に3回、1年分で36回繰り返さなければならない。もっと楽な方法、ありません?) イ:各月ごとの4列目から概ね10列目に年間予定項目ごとの詳細計画を記入する。 例えば、 4列目の1行目(タイトル行)箱根ドライブ 4列目の2行目以下の該当する日ごとに、(例えば4日)箱根の情報収集、(6日)旅館決定、(15日)ドライブ実施  5列目の1行目(タイトル行)九州ドライブ 5列目の2行目以下の該当する日ごとに、(例えば8日)九州の情報収集、(10日)旅館決定、(11日)友人に連絡 (25日)ドライブ実施 以上です。