• 締切済み

EXCELで入力と同時に昇順表示がしたい

お世話になります、エクセル初心者です。 氏名を入力と同時に、昇順表示にしたいのですが ネットでいろんな所を探しても分かりません。 こちらでも探してみたのですが見つからず、お知恵拝借させていただければと思い 投稿させていただきました。 仕事で、ひと月の実績を昇順で氏名をリスト作成しているのですが 空き時間に実績がある方を入力できれば、少しでも効率化が図れるので助かります。 (現在ある2種類のシート) (1)氏名入力をすると住所が自動表示されるようにVLOOKUPで関数を入れたシート。 (2)(1)にデータが飛ぶようにするための、指名・住所の一覧 これとは別に氏名入力をしていくだけで、そのつど昇順になるシートができれば (1)のシートに氏名貼り付けをして、住所を引っ張ってこれるようにしたいのです。

みんなの回答

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

シート1には(1)の表が有って、シート2にはデータベースとして氏名と住所の表が有るとします。 シート1ではA列に氏名を入力すればB列にVLOOKUP関数でその方の住所が表示されるとします。そこで例えばC列から右の列には何かの実績を示す数値が入力されるとします。それらのデータに基づく氏名などのデータを昇順で並べたものを自動的にシート3に表示させるとしたら次のようにします。 なお、シート1では1行目は項目名でそれぞれのデータは2行目から下方に入力されているとします。 シート3のA1セルには、例えばシート1のC列でのデータを昇順で並べたときの表を作るとしたらシート1のC1セルに入力された項目名を入力します。 シート1の例えばJ列とK列には作業列を設けます。J2セルには次の式を入力して下方にドラッグコピーします。 =IF(OR(A2="",Sheet3!A$1=""),"",RANK(INDEX(A:I,ROW(),MATCH(Sheet3!A$1,A$1:I$1,0)),INDEX(A:I,2,MATCH(Sheet3!A$1,A$1:I$1,0)):INDEX(A:I,1000,MATCH(Sheet3!A$1,A$1:I$1,0)),1)+ROW(A1)/10000) K2セルには次の式を入力して下方にドラッグコピーします。 =IF(J2="","",RANK(J2,J:J,1)) シート3のA1セルにはシート1で昇順で並べたい項目名を入力します。 2行目にはシート1での1行目をコピーして貼り付けます。 A3セルには次の式を入力してI3セルまで横にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(ROW(A1)>MAX(Sheet1!$K:$K),"",IF(INDEX(Sheet1!$A:$I,MATCH(ROW(A1),Sheet1!$K:$K,0),COLUMN(A1))="","",INDEX(Sheet1!$A:$I,MATCH(ROW(A1),Sheet1!$K:$K,0),COLUMN(A1)))) これでシート3のA1セルにシート1の1行目に入力された項目名を入力することでその項目名で昇順で並べられた表が自動的に表示されます。勿論、シート1でデータが下行に追加されることが有ればそのデータを自動的に取り込んでデータが昇順で並べられます。

24nufsed
質問者

お礼

KURUMITO様、お返事遅くなりましたが、お知恵をありがとうございました! やはり初心者の私にはちょっと理解が難しく^^; もうちょっと勉強しなければ! でも、今後使い慣れていく段階で活用させていただける日がくると思いますので メモをとらせていただきます★ ありがとうございました★☆

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.2

> 申し遅れましたが、セルの結合をして作表しておりました 結合したセルはソートできません。 であれば、根本的にやり方を見直す必要があるのでは? > どこを変更すればよいのかが分かりません・・・ 一度、やりたい並べ替えの手順をマクロで記録してみると良いです。 左下のステータスバーの「マクロの記録」をクリックして記録開始。 マクロ名はデフォルトのMacro1、保存先は作業中のブック やりたいソートを実施。Sheet3のA2~C5の範囲を選択、並び替え。 マクロの記録終了。 Alt+F11でVBAを開くと、対象ブックのModule1に、Macro1が記録されています。 説明のために行番号を付加して、こんな感じのハズ。 01:Sub Macro1() 02:' 03:' Macro1 Macro 04:' 05: 06: Range("A2:C5").Select 07: ActiveWorkbook.Worksheets("Sheet3").Sort.SortFields.Clear 08: ActiveWorkbook.Worksheets("Sheet3").Sort.SortFields.Add Key:=Range("A2"), _ 09: SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal 10: With ActiveWorkbook.Worksheets("Sheet3").Sort 11: .SetRange Range("A2:C5") 12: .Header = xlNo 13: .MatchCase = False 14: .Orientation = xlTopToBottom 15: .SortMethod = xlPinYin 16: .Apply 17: End With 18:End Sub コメントや空行は削除。 06行目は、並べ替えの際にセルの選択は必須で無いので削除。 07~09行目はソート条件のクリア、条件設定ですが、10~17行目のソート実施があれば不要なので削除。 15行目はソートにふりがなを使う/使わないですが、差し当たり関係ないと判断して削除。 結果、記録したSheet3の指定範囲をソートする処理は、 Sub Macro1() With ActiveWorkbook.Worksheets("Sheet3").Sort .SetRange Range("A2:C5") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .Apply End With End Sub って事になるハズ。 処理の本体を、必要な場所のモジュールに貼り付けします。

24nufsed
質問者

お礼

遅くなりましたが、 色々と教えていただき感謝いたします★ 今回の表には、今の私の技術で生かすことができませんでしたが、 これから色々とExcelで作表していく中でぜひ、今回のお知恵を 活用できるよう、メモを取らせていただきました。 お忙しいところ、本当に有り難うございました!

24nufsed
質問者

補足

改めまして、再コメントありがとうございます。 なかなか難しいもんですね(T△T) 最初に教えていただいたところからVBAっていうのを開きましたが、 「こんな感じのハズ」とおっしゃったようになっていませんでした・・・ 私は途中で何をしてしまったのか・・・ VBAプロジェクトのSheet3をクリックして、右側に 「General」と「Macro1」というのがあって、その下に Sub Macro1() With ActiveWorkbook.Worksheets("Sheet3").Sort .SetRange Range("A2:C5") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .Apply End With End Sub をコピペしてみたけど、これが 「処理の本体を、必要な場所のモジュールに貼り付け」ってことなのか・・・ なんせ、エクセル初心者なものでモジュールっていうのすらわからずで(涙) VLOOKUPなども、ネットでやり方探してなんとかやりこなしている程度なもんで、 せっかく詳しく解説してくださったのに残念な結果で申し訳ないです。 理解ができなくてすみません。。。 でも、親切にお答えいただき本当にありがとうございます★☆

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

> これとは別に氏名入力をしていくだけで、そのつど昇順になるシートができれば マクロで入力があった際に並べ替えするとかなら割と簡単です。 ・入力終了と同時に並べ替えされるので、どこに入力したか分からなくなります。 ・間違って入力したものも並べ替え、どこに行ったか探さなきゃならないので、修正が面倒です。 ・マクロの実行はさむとundo出来ません。 など、問題あると思いますが。 手順は、 Alt+F11でVBAを表示。 Sheet1を並べ替えたいとして、Sheet1を右クリック-[コードの表示]。 A列を並べ替えするとして、以下のコードをコピペ。 Private Sub Worksheet_Change(ByVal Target As Range) With ActiveWorkbook.Worksheets("Sheet1").Sort .SetRange Range("A:A") .Orientation = xlTopToBottom .Apply End With End Sub

24nufsed
質問者

補足

●neKo_deux様● 迅速な回答をありがとうございます! 操作手順分かりやすい文章で助かります。 さっそく試してみたところ、動じず・・・ 申し遅れましたが、セルの結合をして作表しておりましたm(__)m 貼り付け先を、エクセルを駆使して枠を作ったもので・・・ 作成しているエクセルでは sheet3で、 セルA~Cの3列 縦に2~5の4列 に氏名入力する表になっておりました。 そこで、以下を入力して試したところです。 どこを変更すればよいのかが分かりません・・・ お忙しい所誠に恐れ入りますが、助けていただけると幸いです。 Private Sub Worksheet_Change(ByVal Target As Range) With ActiveWorkbook.Worksheets("Sheet3").Sort .SetRange Range("A:A") .Orientation = xlTopToBottom .Apply End With End Sub

関連するQ&A

  • EXCELのマクロについて

    EXCELのマクロについて質問させてください。 一覧シートから、職種別の各シートへ集計(貼り付け)が出来るような プログラムを作成したいのでやってみたところ、私の知識では上手く出来ませんでした。 お力をお借り出来ると幸いです。 具体的には、一覧シートへ入力後(毎月入力) 『A』 『B』 『E』と分かれた職種別の各シートへ職種別かつ氏名の昇順でソートが掛かった状態で 貼り付け?集計?が出来るようにしたいです。 一覧シートのB列には「A・B・E」のどれかの職種が入力されており 氏名はD列E列へ記載しています。(漢字、カナ表示) A~AD列までデータを記入していますので、全て各シートへ集計出来ると嬉しいのですが・・・ 行は8行目から記載してます。 上記のようにプログラムを組む事は可能でしょうか。 具体的なプログラムも載せて頂けると嬉しいです。 宜しくお願い致します。

  • エクセルの入力規則リストについての質問です。

    エクセルの入力規則のリストですが、リストの範囲を別シートの氏名一覧に指定したいのですが上手くいきません。 また、リストの中に選択したい氏名が無い場合は直接入力できるようにしたいのですがかのうでしょうか?

  • コピー&ペーストすると、VLOOKUPの “範囲” が、ずれてしまう

    こんにちは。いつもお世話になっております。とかく昨日からは幾度か質問させて頂いておりまして、都度ご丁寧な回答を承っており、感謝しております。 さて、早速ですが今度は下記の事で悩んでおります。 ◆エクセルバージョン → エクセル2003 ◆VLOOKUPの入ったセルをコピーして貼り付けすると “範囲”が自動的に “1”ずつプラスされて式が変わってしまう為、都度、手修正で直している。  これを改善したい。 【具体例】 SHEET名 = 顧客名一覧 に対して A1に お と入力すると B1に 小野 と表示される。 A2に か と入力すると B2に 加藤 と表示される。 A3に さ と入力すると B3に 斉藤 と表示される。 ように作成しております。 この 顧客名一覧Sheetの B1 に  =VLOOKUP(A1,VLOOKUP用シート!A1:B100,2,0) という関数式を入れているので、これをコピーし、B2~B100まで貼り付けをしたのですが、そうすると B2には =VLOOKUP(A2,VLOOKUP用シート!A2:B101,2,0) と入ってしまい、 B3には =VLOOKUP(A3,VLOOKUP用シート!A3:B102,2,0) と入ってしまいます。 何故、この数式の中の“範囲”が勝手にプラス1ずつされてしまうのか…これを防ぎたい。 現在は、100個ほどペーストしたものに対して、全て直接入力で“範囲”を正しい VLOOKUP用シート!A1:B100 と修正している状態です。 どなたかお手隙の方いらっしゃいましたら、どうぞご教授の程、お願い致します。

  • エクセルでこのような事は可能ですか?

    ワークシート1枚目には 住所、氏名、電話、駐車位置、車両Noなどを入力して、2枚目のワークシートには駐車位置と電話番号、氏名のみを一覧に表示。 このような作業を一度の入力で作成することは可能ですか?

  • エクセルでエラー表示#N/Aを消す方法

    エクセルでSheet1に住所録を作り、Sheet2に宛名シールを作ろうとしています。 必要な宛先が、その都度変わるので番号入力だけで、宛名を入力できるようにしようと思い、見よう見まねでSheetをリンクさせて作りましたが、空欄に#N/Aのエラー表示が出てしまいます。 宛名シールは、使わない分再利用したいので、エラー表示を消したいと思います。 つかった関数は =IF(VLOOKUP(A1,'Sheet1'!A:J,6)="","",VLOOKUP(A1,'Sheet1'!A:J,6)) です。 職場でのパソコンなので、やりながら確認という事はできませんが、どなたかエラー表示の消し方を教えてください。 エラー表示が、印刷に出ない方法でも構いません。 使っているOSはXPでソフトは、Office2003です。 よろしくお願いします。

  • EXCELでの集計について

    現在、EXCELでリストを作成していますが、 パソコンについて無知でして、皆様のお知恵を拝借したいです。 sheet1にitemリスト一覧を、sheet2にitemとそれに紐づくNoリスト一覧があります。 sheet1のリスト一覧のNo部分に、sheet2のリストに紐づくNoを表示させ、 下表の---結果----のように表示を行いたいです。(画像参照ください) 何卒、ご協力くださいませ。 よろしくお願いいたします。

  • エクセルでシート1のセルに入力すると別シートのセルに表示させるには

    依頼されて会員証をエクセル2003で作っている最中です。 SHEET1に下記の様に会員証のベースを作ました。 [●●●の会] 会員番号 [SHEET2の会員番号列] 住所 [SHEET2の住所列] 氏名 [SHEET2の氏名列] 電話番号 [SHEET2の電話番号列] [管理社名] SHEET2にまだ空欄ですが、会員番号・住所・氏名・電話番号のリスト表を作りました。 ここからが課題でして、SHEET2に会員番号、住所とセルに打ち込んでいくと SHEET1のそれぞれに対応したセルに表示させる為に SHEET1のセルに、[=Sheet2!A3]と打ち込めば、 SHEET2のA3のセルが対応されますが、 これではそのセルしか対応しません。 SHEET2の1行目に会員番号、住所から打ち込んだものは、 単純にSHEET1の表示させたいセルに[=SHEET2!○○]を打ち込めば、 それが対応されます。 ただSHEET2の2行目は空白ですので、新たに打ち込んで対応させようとしても出来ません。 毎度毎度SHEET1の表示させたセルに[=SHEET2!○○]をしていくのは大変です。 新規にリストを打ち込むたびにSHEET1の会員証に 表示させる方法はどういったものがあげられるのでしょうか? 或いは、SHEET1の会員証ベースに打ち込んでいくとSHEET2のリストに 自動的に登録される仕組みの方がやりやすいのでしょうか? 数式も教えていただければ大変有難いです。 アクセスの方がやりやすいかもしれませんが、 依頼した方のPCにはアクセスは入っていないですし、 私自身もアクセスはイマイチの部分があります。 エクセルのマクロなるものを使えません。 年始早々に使用したいとの事ですので、 なんとか仕上げてあげたいとは思います。 宜しくお願い致します。

  • エクセルの再計算

    いつもお世話になります。 エクセルで住所録を作っています。 sheet1に社員No.、郵便番号、氏名、住所1、住所2、住所3と入力したものを sheet2に封筒印刷できるようにVLOOKUP関数を使っています。 sheet1に住所を新しく入力しEnterを押すとツールバーの下のグレーの所 (普段は”コマンド”と表示されています) が再計算10%→25%→→100%となり、再計算が終わらないと次のセルの 入力ができません。 ツール→オプション→計算方法タブの計算方法を自動から手動に変えても いつの間にか戻ってしまいます。 住所録を入力するのに時間がかかり、困っています。 何か良い策はありませんか? そしてなぜこのようになってしまったのでしょうか? 宜しくお願いします。

  • 【エクセル2010使用】違うブックから[データの入

    【エクセル2010使用】違うブックから[データの入力規則]→[入力値の数値]→[リスト]を参照することは、可能なのでしょうか? 現在、同じブック内の別のシートに会社で取り扱っている[商品一覧]を作って、別のシートでドロップダウンするなどという使い方をしています。 ただ、取引先ごとにブックを分けているため、[商品一覧]がひとつでも増えてしまうとその都度、修正せざるをえません。 そのため、違うブックに[商品一覧]を作って、リストからドロップダウンできれば、修正するにしても一ヶ所のみで済むと思ったのですが、いろいろ調べてもうまくいかず、こちらで質問させて頂きます。 ※ちなみに、VLOOKUP関数を用いて入力された商品名から値段が表示されるように設定しています。 ただ、関数はできても[データの入力規則]は違うブック間ではやり取りができないのかな…と頭を悩ませております。 どなたかエクセル2010で、上記の希望を叶えてくれる手順をご存じの方がいらっしゃいましたら、教えて頂けると幸いです。 宜しくお願い致します。

  • エクセル 別シートにあるデータを。

    いつもお世話になります。 エクセルで顧客リストを作るのに、sheet1は店名が空欄の顧客リストで、sheet2に各店の郵便番号・住所等一覧リストがあって、そのsheet1の一覧リストに店名を入力すれば、自動的にsheet2にある住所等が出てくる。と言う感じに反映させたいのですが、どうすれば良いですか?

専門家に質問してみよう