• ベストアンサー

エクセルで並べ替え

エクセルで、以下のような表を作っています。 No. 名前   時刻 1 山田花子 8:28 2 鈴木敏雄 8:15 3 大田大輔 8:44 4 田村昌一 8:21 ・    ・    ・ 毎回違う時間に入室されるお客様リストです。 この表で、毎回違う時刻を入力して、毎回早い者順に並べ替え表示をさせています。 質問なのですが、この時刻を入力した時点で、自動で並べ替えを行う方法はあるのですか?  宜しくお願いします。

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

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

並べ替えたあと、Noも1から順番に振り直すのでしょうか? 一応そのように仮定して作ってみました。 No.、名前、時刻がそれぞれA列、B列、C列と仮定しています。 シートタブを右クリックして「コードの表示」を選択すると、VBAの入力画面が開きます。 右の白い画面に以下のマクロをコピーして貼り付けます。 Private Sub Worksheet_Change(ByVal Target As Range)  Dim i As Integer  If Target.Cells(1, 1).Column <> 3 Then Exit Sub  Application.EnableEvents = False  Columns("A:C").Sort Key1:=Range("C2"), Header:=xlYes    '***ここから次の***までは、自動的にA列が自動的に採番されるように  'なっていれば不要  For i = 2 To Cells(Rows.Count, "C").End(xlUp).Row   Cells(i, "A").Value = i - 1  Next i  '***  Application.EnableEvents = True End Sub これで、時刻を入力した時点で並べ替えが行われます。 No.は自動的に入力されます。 もしNo.が =ROW()-1 のように、並べ替えても自動的に正しい数字になるように入力されているのであれば、上記マクロの***で囲まれた部分は不要なので削除してください。

その他の回答 (2)

noname#204879
noname#204879
回答No.3

  A   B    C  D  E   F    G 1 No. 名前   時刻   No. 名前   時刻 2  1 山田花子 8:28    1 鈴木敏雄 8:15 3  2 鈴木敏雄 8:15    2 田村昌一 8:21 4  3 大田大輔 8:44    3 山田花子 8:28 5  4 田村昌一 8:21    4 大田大輔 8:44 6              5 7              6 G2: =IF(ISERROR(SMALL(C:C,E2)),"",SMALL(C:C,E2)) F2: =IF(G2="","",INDEX(B:B,MATCH(G2,C:C,0)))

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

そういうデータ入力をしたときなどに、ある作業を行わせるのはVBAでイベントという概念で捉えてコードを書くと実現できます。 質問例では、セルの値のChangeイベントです。 ソート(並べ替え)そのもののVBAコードは、実際に1例の操作をして、マクロの記録をとれば簡単に知れます。 VBAでイベントという概念は学習の第二ステップなので、質問者が勉強しようと思うかどうか。

関連するQ&A

  • 【エクセル関数】複数条件(月別・個人別)で集計したい

    例えば、以下のような表があるとします。 A        B       C 2005/10/12  山田一郎  5,000 2005/10/17  鈴木花子  1,000 2005/10/28  鈴木花子  2,000 2005/11/03  山田一郎  1,000 2005/11/17  山田一郎  2,000 2005/11/19  鈴木花子  4,000 これを、次のように仕訳したいのですが、      山田一郎  鈴木花子 10月  5,000     3,000 11月  3,000     4,000 どのような関数を使えばうまく集計することができますでしょうか? 自分なりに、SUMIFやSUMPRODUCTを使って考えてみたのですが、 うまく集計することができませんでした。 どうぞよろしくお願いします。

  • エクセル:複数行のセル値を、対応した項目に従って一つのセルにまとめたい

    いつもお世話になっています。 早速ですが、下記のようなことをしたいのですが、 関数でできるでしょうか?  │ A     │ B ----------------------- 1│日本太郎 │ ばら ----------------------- 2│日本太郎 │ さば ----------------------- 3│山田花子 │ キリン ----------------------- 4│山田花子 │ 米 ----------------------- 5│日本太郎 │ イス ----------------------- 6│山田花子 │ インク ----------------------- ↓  │  A   │ B -----------------------  │       │ ばら 1 │日本太郎│ さば  │       │ イス -----------------------  │       │ キリン 2 │山田花子│ 米  │       │ インク ----------------------- A列に人物名、B列に品物を入力します。 誰かが何かを入手した際、その順に入力していきますので、 同一の人物が複数の行に亘って入力された表(上の表)があります。 これを基に「誰が何を持っているか」をまとめる表(下の表)を作りたいのですが、 上の表を基に下の表が自動的に出来上がるような関数はあるでしょうか? VLOOKUPを使っても上手く出来ず、しかし他に思い浮かびません。 何か良い知恵がございましたら、お教え下さい。

  • Excelの入力規則で2列表示したい

    入力規則を使って、社員コードを入力する際に 10001 山田太郎 10002 鈴木花子 10003 佐藤大介 のように、ドロップダウンリストに「社員コード」「社員名」と2列表示させたいのです。 そして、例えば山田太郎を選択すると、セルには「10001」だけが入力されるようにしたいのですが・・・ (Accessのルックアップフィールドみたいな感じ) [入力規則]-[リスト]で、社員コード表を選択しても、単一の列または行でなければいけませんとエラーが出ます。 かといって[入力規則]-[リスト]で範囲指定をカンマ区切りで 10001 山田太郎,10002 鈴木花子,・・・と入力しても、エラーは出ませんがドロップダウンリストから選択したときに社員コード表と社員名が一緒にセルに入力されてしまいます。 なにか良い方法はありませんでしょうか? よろしくお願いいたします。

  • バラバラになっている名前をきれいに並べたい

    エクセルで表を作成しています。 山田太郎  東京 鈴木花子  神奈川 佐藤一太郎 千葉 山田太郎  東京 山田太郎  東京 鈴木花子  神奈川 佐藤一太郎 千葉 ↓ 山田太郎  東京 山田太郎  東京 山田太郎  東京 鈴木花子  神奈川 鈴木花子  神奈川 佐藤一太郎 千葉 佐藤一太郎 千葉 のようにきれいに並べる方法はないでしょうか? よろしくおねがいします。

  • EXCELで条件を満たす時コピー挿入したい

    EXCEL2002ですが、以下のようなデータがあるとします。      A      B 1    山田太郎 100 2    山田花子 100,200,300 3    鈴木一郎 300 B列にカンマ区切りで入力しているデータがある場合、      A      B 1    山田太郎 100 2    山田花子 100 3    山田花子 200 4    山田花子 300 5    鈴木一郎 300 上記のように、B列のカンマ区切り分を振り分けたレコードを新たに 挿入したいのです。 尚参考までに、A列は名前などでデータ内容は多様になり、B列は ある程度決まった選択肢(20~30通り)になります。 一般の関数では無理なような気がするのですが、VBAなどでは可能でしょうか? もし可能であれば、マクロなども組んだことがないものですから、 やさしくご教授いただければ幸いです。 よろしくお願いいたします。

  • Excel(2010)で氏名の頻度の求め方

    Excel(2010)で、A列に縦に 山田 鈴木 田中 山田 鈴木 山田 というように氏名の並べてある表があるとします。この表で氏名の頻度が 山田 3 鈴木 2 田中 1 というように表示できる関数または方法があるでしょうか。 この表のように項目が少なければ 山田 鈴木 田中 というセルを作っておいて、VLOOKUP関数で求められますが、実際には約500行ありその中の氏名をすべて手作業で入力するのは大変ですので、重複なくすべての氏名を抜き出すのは実際的ではありません。 以上よろしくお願いします。

  • ExcelのVBAに明るい方・・・

    Excelの、Sheet1 に 1日目,鈴木くん,点数,・・・ 2日目,佐藤くん,点数,・・・ 2日目,山田くん,点数,・・・ 3日目,佐藤くん,点数,・・・ 3日目,鈴木くん,点数,・・・ 4日目,山田くん,点数,・・・ ・・・ という、元ダネの一覧表があって、 このデータを日々追加入力していくごとに、自動的に、 Sheet2 には、鈴木くんのみの一覧表のデータ 1日目,鈴木くん,点数,・・・ 3日目,鈴木くん,点数,・・・ ・・・ Sheet3 には、佐藤くんのみの一覧表のデータ 2日目,佐藤くん,点数,・・・ 3日目,佐藤くん,点数,・・・ ・・・ Sheet4 には、山田くんのみの一覧表のデータ 2日目,山田くん,点数,・・・ 4日目,山田くん,点数,・・・ ・・・ が、自動的に追加入力されるVBAの記述って、 どうすればいいんでしょうか? VBAに明るい方、どうかよろしくお願いします。

  • エクセルで誕生日の月順に並べたい

    初めまして。エクセルの名簿があるのですが並べ替えで困ってます。 エクセルで下記のような表があるのですが    A    B      1 氏名  生年月日 2 左藤  S50.2.10 3 山田  S40.2.20 4 鈴木  S30.2.2 5 加藤  S48.2.15 ツールのデータ並べ替えをすると    A    B      1 氏名  生年月日 2 鈴木  S30.2.2 3 山田  S40.2.20 4 加藤  S48.2.15 5 左藤  S50.2.10 のように年数でならんでしまうのですが年数関係なしに下記のように日にちで並べかえたいのですが     A    B      1 氏名  生年月日 2 鈴木  S30.2.2 3 左藤  S50.2.10 4 加藤  S48.2.15 5 山田  S40.2.20 どうすればイイでしょうか? 教えてください。 よろしくお願いします。

  • Excel2007並べ替えについて

    元々あった名簿は、50音順ではありませんでしたが、昇順の並べ替え機能で50音順に並べ替え、名簿を作り直しました。 今度は、50音順の名簿から元の名簿に順序を戻したいのですが、そのような方法はあるのでしょうか。 名前と点数の2つの列のみ並べ替えたいです。 例) 山田 佐藤 渡辺 鈴木 : : だったのを 佐藤  70 鈴木  80 山田  60 渡辺  90 という名簿に作り変えました。これを、 山田  60 佐藤  70 渡辺  90 鈴木  80 と元の順に、右隣の列の点数も一緒に並べ替えたいのです。 何か方法があれば教えてくださいませんか。

  • Excelの改ページをしたとき

    検索の仕方が悪いのか、どうしたらいいのか方法が分からないのでご存知の方はお教えください。 以下のような表があります。 使用者名|教室 |授業 ―――――――――― 山田花子|A□|音楽 □□□□|□□|国語 □□□□|B□|数学 □□□□|□□|図工 ――――――――――ここで改ページ □□□□|□□|体育 山田太郎|B□|音楽 □□□□|□□|図工 鈴木一郎|A□|図工 □□□□|□□|家庭科 両面印刷の予定なので、これでは次のページになったとき即座に誰がどの教室を使っていたか分かりません。 そこで下記のようにしたいのです。 使用者名|教室 |授業 ―――――――――― 山田花子|A□|音楽 □□□□|□□|国語 □□□□|B□|数学 □□□□|□□|図工 ――――――――――ここで改ページ 山田花子|B□|体育←直前の使用者名と教室が入力される 山田太郎|B□|音楽 □□□□|□□|図工 鈴木一郎|A□|図工 □□□□|□□|家庭科 ※スペースではズレてしまった為空白欄に「□」を入力しています。実際には空欄です。 上記のように改ページがあったら直前のデータが入っているセルから情報を抜き出して挿入したいのですがどのような方法を使えばよいでしょうか? それぞれの行は固定ではなく途中で挿入が入ったりする場合があります。そうするとまた一から入力しなければならず大変手間です・・・。 関数を使えばいいのか、Excelの機能で実現できるのかマクロを組まなければならないのか皆目検討が付きません。 ヘッダーはすでに使用しています。何個も設定できるものなのでしょうか? 全体で100ページ以上になり、かつ毎月提出するものなため、便利な機能があれば知りたいです。 とても困っています。ご存知の方はぜひお教えください。 よろしくお願いします。

専門家に質問してみよう