No.5ベストアンサー
- 回答日時:
No1です。
VBA案です。仮に
350名のデータが入っているシート名が Sheet1
振込み日が B1(B列)だとして
並び替えた結果を表示したいシートの名前のタグを右クリック
コードの表示をクリック
VBエディターが起動したら
Private Sub Worksheet_Activate()
Sheets("Sheet1").Cells.Copy
Cells.Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlGuess
End Sub
をコピーしてみてください。
簡単に説明しますと
Private Sub Worksheet_Activate() は、ほかのシートからこのシートを選択した時に実行される
Sheets("Sheet1").Cells.Copy Sheet1という名前のシートをコピー
Selection.Sort Key1:=Range("B2"), ・・ B列を基準に並び替えです。
必要に応じて
Sheet1とRange("B2")の部分は変更して使ってみてください。
並び替えを表示したいシートを選択すると勝手に実行されますので
見た目では関数を配置したような感覚で使えるはずです。
この回答への補足
補足
ありがとうございます。やってみたところ、
実行時エラー!'1004'
アプリケーション定義またはオブジェクト定義のエラーです。
と出てしまいます。(Q_Q)↓
新しいシートにコピーは出来ますが、ソートは出来ません。
実際に使ったコードは、
Private Sub Worksheet_Activate()
Sheets("会計用").Cells.Copy
Cells.Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Sort Key1:=Range("M2"), Order1:=xlAscending, Header:=xlGuess
End Sub
です。
会計用シートのB2からN338までデータが入っていて、ソートキーはM列です。1行目は項目名になっています。
頼りきりで申し訳ないのですが、どうかこの先も教えてください。
ありがとうございました。何とか、運用に間に合いました。
上手くいかないことも有りましたが、VBAエディタも調べたりして、似たのがあったので勉強もしました。(というほどでもありませんが。)今回のお陰で実際の入金の管理も助かったし、個人的には新しいことも学べて助かりました。また何かあればよろしくお願いします。
No.8
- 回答日時:
回答番号:ANo.2です。
>こちらに質問をしている間に、当方の仕様が変わってしまいました。
1つのシートにまとまっている方が簡単になります。
今仮に、
Sheet1のA2以下にクラス名のデータ
Sheet1のB2以下に出席番号のデータ
Sheet1のC2以下に名前のデータ
Sheet1のD2以下に振込日のデータ
Sheet1のE2以下に振込額のデータ
が入力されているものとします。
又、適当な列(ここでは仮にSheet3のA列とします)を作業列として使用し、
Sheet2のA2以下に振込日順に並べ替えたクラス名のデータ
Sheet2のB2以下に振込日順に並べ替えた出席番号のデータ
Sheet2のC2以下に振込日順に並べ替えた名前のデータ
Sheet2のD2以下に振込日順に並べ替えた振込日のデータ
Sheet2のE2以下に振込日順に並べ替えた振込額のデータ
を表示させるものとします。
まず、Sheet3のA2セルに次の数式を入力して下さい。
=IF(ISNUMBER(Sheet1!$D2),Sheet1!$D2+COUNTIF(Sheet1!$D$1:$D2,Sheet1!$D2)/COUNTIF(Sheet1!$D:$D,Sheet1!$D2),"")
次に、Sheet3のA2セルをコピーして、Sheet3のA3以下に貼り付けて下さい。
次に、Sheet2のA2セルに次の数式を入力して下さい。
=IF(ROWS($1:1)>COUNT(Sheet1!$D:$D),"",INDEX(Sheet1!A:A,MATCH(SMALL(Sheet3!$A:$A,ROWS($1:1)),Sheet3!$A:$A,0)))
次に、Sheet2のA2セルをコピーして、Sheet2のB2~E2の範囲に貼り付けて下さい。
次に、Sheet2のD2セルの書式設定を「日付」として下さい。
次に、Sheet2のA2~E2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。
以上です。
No.7
- 回答日時:
>B2に入れたコード
=IF($A2="","",VLOOKUP($A2,会計用!$A:$N,COLUMN(M2),0))
VLOOKUP関数の第3引数の「COLUMN(M2)」の部分は参照したい列番号を指定するのですから、そのセルに入力する場合も2列目なら2を参照する「COLUMN(B2)」などにしてください。
横方向にオートフィルコピーで対応しなくてもよいなら、もちろん列ごとに「2」や「3」のように直接数字を入力してもOKです。
No.6
- 回答日時:
1枚のシートになっているなら、以下の式で日付の大きい順に(一番上のセルがもっとも最近のデータ)並べ替えることができます。
元データがSheet1ならA2セルに以下の式を入力して下方向にオートフィルします。
INDEX(Sheet1!A$2:A$350,MATCH(LARGE(INDEX(Sheet1!$B$2:$B$350-ROW($B$2:$B$350)/10000,),ROW(A1)),INDEX(Sheet1!$B$2:$B$350-ROW($B$2:$B$350)/10000,),0))&""
=B2セルには以下の式を入力して右方向に1つおよび下方向にオートフィルします。
=IF($A2="","",VLOOKUP($A2,Sheet1!$A:$C,COLUMN(B2),0))
日付の若い順に並べ替えるなら、A2セルに以下の式になります。
INDEX(Sheet1!A$2:A$350,MATCH(SMALL(INDEX(Sheet1!$B$2:$B$350+ROW($B$2:$B$350)/10000,),ROW(A1)),INDEX(Sheet1!$B$2:$B$350+ROW($B$2:$B$350)/10000,),0))&""
この回答への補足
ありがとうございます。やってみたところ、
実行時エラー!'1004'
アプリケーション定義またはオブジェクト定義のエラーです。
と出てしまいます。(Q_Q)↓
新しいシートにコピーは出来ますが、ソートは出来ません。
実際に使ったコードは、
Private Sub Worksheet_Activate()
Sheets("会計用").Cells.Copy
Cells.Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Sort Key1:=Range("M2"), Order1:=xlAscending, Header:=xlGuess
End Sub
です。
会計用シートのB2からN338までデータが入っていて、ソートキーはM列です。1行目は項目名になっています。
頼りきりで申し訳ないのですが、どうかこの先も教えてください。
すみません。補足内容を間違えました。
以下がMackyNo1さんへの補足です。
実際に入れたコードは以下の通りで、B2セルに#N/Aが出てしまいます。(Q_Q)↓
何がいけないのでしょうか?
教えてください。
A2に入れたコード
INDEX(会計用!A$2:A$338,MATCH(LARGE(INDEX(会計用!$B$2:$B$338-ROW($B$2:$B$338)/10000,),ROW(A1)),INDEX(会計用!$B$2:$B$338-ROW($B$2:$B$338)/10000,),0))&""
B2に入れたコード
=IF($A2="","",VLOOKUP($A2,会計用!$A:$N,COLUMN(M2),0))
No.3
- 回答日時:
シート数が多いこと、かつ日付順に並べ替えることの条件があると、ご希望の操作は実質的に関数で対応することはできません。
以下のページを参考にして複数のシートを1つにまとめるマクロを実行します。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/v …
このシートで日付順に並べ替える操作を行えばご希望の操作になりますが、これも自動化したいなら、この操作をマクロの記録で実行して、そのコードを上記のコードの最後に追加します。
この回答への補足
ありがとうございます。ご紹介いただいたサイトはわかりやすくて良さそうです。
ところで、申し訳ないのですが、こちらに質問をしている間に、当方の仕様が変わってしまいました。
元のクラス順の8シート(8クラス)は一つのシートに変更になりました。(1クラス~8クラスが縦に長く続いています。)元の質問と違うのですが、こちらでお世話になっているので、改めてお伺いさせていただいてよろしいですか?
改めて質問します。一つのシートにクラス順に出席番号順に350人分の、「振込日」と「振込金額があります。それを別のシートに全クラスのデータを「振込日別」に並べたいのです。
厚かましいですが、よろしければご教示ください。
ありがとうございました。ベストアンサーに選んだ方法のシートごとのマクロだけでは、そのシートの編集(合計を追加したり、ところどころに空白行や小計を入れたり)ができなかったので、MackyNo1さんのアイデアもお借りして、無事、運用にこぎ着けました。初めは、いろいろなことが上手くいかなかったのですが、この際、大変勉強になりました。今後ともどうぞよろしくお願いします。
No.2
- 回答日時:
今仮に、クラスのデータが入力されている各Sheetにおいて、
名前のデータが入力されている列がA列、
振込日のデータが入力されている列がB列、
振込額のデータが入力されている列がC列、
であり、各列の1行目にはそれぞれ、
A1セルに 名前
B1セルに 振込日
C1セルに 振込額
という様に項目名が並んでいて、実際のデータは、2行目以降に入力されているものとします。
更に、B列には日付が連続して入力されていて、途中に文字列データが入力されているセルや、空欄は存在していないものとします。
又、適当なSheetを作業用Sheetとして使用するものとします。
ここでは仮に、Sheet9を作業用Sheetとします。
まず、Sheet9のB1セルから下に向かって、
B1セルに Sheet1
B2セルに Sheet2
B3セルに Sheet3
B4セルに Sheet4
B5セルに Sheet5
B6セルに Sheet6
B7セルに Sheet7
B8セルに Sheet8
という具合に、クラスのデータが入力されている各SheetのSheet名を、間を空けずに入力して下さい。(並べ方が順不同でも正常に動作しますが、なるべくならクラス順に並べて下さい)
次に、Sheet9のC1セルに次の数式を入力して下さい。
=IF($B1="","",COUNT(INDIRECT($B1&"!B:B")))
次に、Sheet9のC1セルをコピーして、Sheet9のC2~C8の範囲に貼り付けて下さい。
次に、Sheet9のA1セルに
0
と入力して下さい。
次に、Sheet9のA2セルに次の数式を入力して下さい。
=IF($B1="","",SUM($C$1:$C1))
次に、Sheet9のA2セルをコピーして、Sheet9のA3~A8の範囲に貼り付けて下さい。
次に、Sheet9のE1セルに次の数式を入力して下さい。
=IF(ROW()>SUM($C:$C),"",INDIRECT(VLOOKUP(ROW()-1,$A:$B,2)&"!R"&ROW()-VLOOKUP(ROW()-1,$A:$A,1)+1&"C"&COLUMNS($A:A),FALSE))
次に、Sheet9のD1セルに次の数式を入力して下さい。
=IF($F1="","",$F1+COUNTIF($F$1:$F1,$F1)/COUNTIF($F:$F,$F1))
次に、Sheet9のE1セルをコピーして、Sheet9のF1セルとG1セルに貼り付けて下さい。
次に、Sheet9のD1~G1の範囲をコピーして、同じ列の2行目以下に、(全てのクラスの合計人数を上回る行数になるまで)貼り付けて下さい。
次に、別Sheet(並び替え結果を表示するSheet)のA2セルに次の数式を入力して下さい。
=IF(ROWS($1:1)>COUNT(Sheet9!$D:$D),"",VLOOKUP(SMALL(Sheet9!$D:$D,ROWS($1:1)),Sheet9!$D:$G,COLUMNS($A:B)))
次に、別SheetのA2セルをコピーして、別SheetのB2セルとC2セルに貼り付けて下さい。
次に、別SheetのB2セルの書式設定を[日付]にして下さい。
次に、別SheetのA2~C2の範囲をコピーして、同じ列の3行目以下に、(全てのクラスの合計人数を上回る行数になるまで)貼り付けて下さい。
以上です。
尚、クラスのデータが入力されている各Sheetにおいて、実際のデータが入力されているのが、2行目からではなく、例えば3行目からである場合には、Sheet9のE1セルに入力する数式中の
+1
と記述されている箇所を、
+2
に変更して、
=IF(ROW()>SUM($C:$C),"",INDIRECT(VLOOKUP(ROW()-1,$A:$B,2)&"!R"&ROW()-VLOOKUP(ROW()-1,$A:$A,1)+2&"C"&COLUMNS($A:A),FALSE))
として下さい。
この回答への補足
ありがとうございます。詳しく細かく丁寧に書いていただいて、大変恐縮です。
ところで、申し訳ないのですが、こちらに質問をしている間に、当方の仕様が変わってしまいました。
元のクラス順の8シート(8クラス)は一つのシートに変更になりました。(1クラス~8クラスが縦に長く続いています。)元の質問と違うのですが、こちらでお世話になっているので、改めてお伺いさせていただいてよろしいですか?
改めて質問します。一つのシートにクラス順に出席番号順に350人分の、「振込日」と「振込金額があります。それを別のシートに全クラスのデータを「振込日別」に並べたいのです。
厚かましいですが、よろしければご教示ください。
No.1
- 回答日時:
一回きりの作業であれば手作業で
それぞれのシートのデータをコピーして別シートの最後の貼り付けて
最後に並び替えします。
毎回発生する作業であれば
VBAの力をかりてプログラムを作成して
その作業のたびにボタンを押すということになると思います。
もしよければこれを機械にVBAについて勉強して見られては如何でしょうか?
ありがとうございます。短期間に毎日、金額をチェックしたいのです。しかも使用者は私ではなく、別の者がしますので、何もしなくてもソートされている状態が理想です。
VBAは面白そうですので、今後機会があれば、挑戦したいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelマクロの作成方法・コーディングをご教授ください。 3 2023/02/26 18:09
- Excel(エクセル) 棚卸表の前月比の関数等あれば教えてください 2 2023/05/02 18:34
- Excel(エクセル) Excelで、別シートの表のステータスに伴った動的な自動転記をしたいです。 2 2023/06/14 15:56
- Visual Basic(VBA) 別ブックからシートのコピー 3 2022/04/01 20:07
- Excel(エクセル) エクセルで割り振りをする方法 7 2022/08/02 14:02
- Excel(エクセル) 再質問です。エクセルでシートが1から31まであり、日付けが入力されているセルがあります。シート1から 4 2022/08/02 23:08
- その他(Microsoft Office) エクセルマクロ オートフィルターでで選択コピー 2 2022/04/18 11:05
- Excel(エクセル) エクセルシートのデータを1列飛ばしで別ブックのシートに貼り付けるマクロが知りたい 2 2023/06/05 22:37
- Google Drive Googleスプレッドシートについて質問です。 今作っているデータで、 シート1→ベタ打ちでひたすら 2 2022/05/18 14:27
- その他(Microsoft Office) エクセルで串刺ししたシートの並べ替えをしたいです 4 2023/02/14 11:59
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
【Excel関数】別シートに日付順でデータを抽出する方法
Visual Basic(VBA)
-
Excel複数シートから日付と文字を取り出して日付順に並べたいです
Excel(エクセル)
-
入力後に日付順になるように自動で並び替えしたいのです。
Excel(エクセル)
-
-
4
エクセルの表で条件(日付別)にあてはまる行を 別シートに順番に抽出されるような関数を教えてください
Excel(エクセル)
-
5
エクセルで日付順で抽出
Excel(エクセル)
-
6
複数のシートで散在するデータを日付順にナンバリングする方法
Excel(エクセル)
-
7
Excelで2つの表を1つにまとめるには?
Excel(エクセル)
-
8
Excelで入力したデータを自動的に並び替える方法
Excel(エクセル)
-
9
Excelでの並べ替えを全シートまとめて処理したい
Excel(エクセル)
-
10
エクセルで複数シートを別のシートに一覧表として自動で反映されるようにしたいです。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
1年分のデータから特定の月分...
-
エクセルで数字、文字列混在の...
-
1つのセルにまとまっている情報...
-
同一セルに日時があるものを日...
-
エクセルVBAで、複数セルのデー...
-
Excelで指定した条件と一致する...
-
EXCELでCSVファイル保存すると...
-
セルの着色を認識する関数って...
-
ドロップダウンリストで空白の...
-
COUNTIFの反対の関数はあるので...
-
エクセルでセルを一括で右詰に...
-
Excel2010 vlookup 検索値が複...
-
エクセルで特定の行を除いて計...
-
エクセルで文字が白くなる
-
エクセルで円グラフに引き出し...
-
エクセルの主軸と第2軸の0を合...
-
別のシートから値を取得するとき
-
エクセルで特定の色の数字だけ...
-
エクセルで文字を含む式に、カ...
-
エクセル条件付書式で指定の時...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
1年分のデータから特定の月分...
-
同一セルに日時があるものを日...
-
EXCELでCSVファイル保存すると...
-
Excelで指定した条件と一致する...
-
ドロップダウンリストで空白の...
-
エクセルで数字、文字列混在の...
-
1つのセルにまとまっている情報...
-
COUNTIFの反対の関数はあるので...
-
エクセルVBAで、複数セルのデー...
-
エクセルでセルを一括で右詰に...
-
EXCELで年月日の表記から日付部...
-
複数のシートの日付データを、...
-
エクセル
-
【VBA】指定フォルダに格納中の...
-
webクエリのurlの変更方法
-
Excelで、表紙に、住所を自動で...
-
エクセル数式・等間隔ごとの範...
-
EXCELで足し算できるのにSUM...
-
Excelで連続データを行飛ばしで...
-
色なしセルの合計値の出し方に...
おすすめ情報