• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:excelで反復練習スケジュールを管理したい)

Excelで反復練習スケジュールを管理する方法

このQ&Aのポイント
  • Excelを使って反復練習スケジュールを管理する方法について解説します。平日に英会話を勉強している方に特に役立ちます。1つのレッスンを反復練習することで記憶を定着させる方法を紹介します。
  • 具体的なスケジュールは、1回目のレッスンを受けた日から2日後に2回目のレッスン、1週間後に3回目のレッスン、2週間後に4回目のレッスン、4週間後に5回目のレッスンを行うというものです。このようにインターバルを倍々に長くしていくことで、効果的な学習効果を得ることができます。
  • Excelでこのスケジュールを管理するためには、workday関数を使って2回目以降の日付の候補を計算し、countif関数を使って毎日のレッスン数をカウントすることが必要です。また、3レッスン以上になった場合は、翌平日に繰り延べる必要がありますが、その方法についてはまだ解決していません。質問者の意見を募集しています。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.5

準備: C1セルに「L1」と記入し,右にオートフィルドラッグしてL50になるまでひっぱる B2セルに =COUNT(C2:IV2) と記入し,B200セルぐらいまでオートフィルドラッグで引っ張る Ctrl+Aで全セル選択し, 条件付き書式を開始し,  セルの値が → 数式が に変えて  右の空欄に  =$B1>1 と記入,書式ボタンでセルの色を黄色く塗らせることにする このシートを数枚複製しておく。 ここまで出来たら,一度ブックを保存しておく。 ケース1:開始日からの間隔固定 1枚のシートのシート名タブを右クリック,コードの表示を選び 現れたシートに下記をコピー貼り付ける Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)  Dim n  Target = 1  n = 1  Do Until Cells(Target.Row + n, "B") < 2  n = n + 1  Loop  Cells(Target.Row + n, Target.Column) = 2  n = 7  Do Until Cells(Target.Row + n, "B") < 2 And Target.Offset(n) = ""  n = n + 1  Loop  Cells(Target.Row + n, Target.Column) = 3  n = 14  Do Until Cells(Target.Row + n, "B") < 2 And Target.Offset(n) = ""  n = n + 1  Loop  Cells(Target.Row + n, Target.Column) = 4  n = 28  Do Until Cells(Target.Row + n, "B") < 2 And Target.Offset(n) = ""   n = n + 1  Loop  Cells(Target.Row + n, Target.Column) = 5  Cancel = True End Sub ファイルメニューから終了してエクセルに戻り, C2セルをWクリックする D2セルをWクリックする 黄色くなったらその日は一杯なので,黄色を外した行をWクリックして予定を入れていく ケース2:反復の間隔固定 準備した別のシートを開く シート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)  Dim n  Target = 1  n = 1  Do Until Cells(Target.Row + n, "B") < 2  n = n + 1  Loop  Cells(Target.Row + n, Target.Column) = 2  n = n + 6  Do Until Cells(Target.Row + n, "B") < 2  n = n + 1  Loop  Cells(Target.Row + n, Target.Column) = 3  n = n + 7  Do Until Cells(Target.Row + n, "B") < 2  n = n + 1  Loop  Cells(Target.Row + n, Target.Column) = 4  n = n + 14  Do Until Cells(Target.Row + n, "B") < 2  n = n + 1  Loop  Cells(Target.Row + n, Target.Column) = 5  Cancel = True End Sub ファイルメニューから終了してエクセルに戻り, C2セルをWクリックする D3セルをWクリックしてみる 黄色くなったらその日は一杯なので,黄色を外した行をWクリックして予定を入れていく #レッスン1と2を一日ズラして開始してみると,綺麗に並ぶように思います。 #マクロの作業中ブックは保存しないこと。 今後マクロを使い続ける場合は,マクロのセキュリティを中にしてエクセルを再起動し,ブックを開く際にはマクロを有効にして開く事。2003迄のエクセルならツールメニューのマクロのセキュリティ,2007ではExcelのオプションの基本設定で開発タブを表示してからマクロのセキュリティで。

noname#173472
質問者

お礼

ありがとうございます。 ご回答をいただいた当初は「やっぱり目検は必要なんだなあ」と少しがっかりしていたのですが、 大変使いやすいです。 リズミカルにダブルクリックできるので、表が楽しく作成できます。 また、マクロを修正することでインターバルの日数も変更でき、とても便利です。

その他の回答 (4)

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.4

良い方法はないかいろいろ試してみましたが、50レッスン×5回程度なら、関数に頼らないで地道にスケジュールを組んだほうが速そうだと思います。

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.3

1日2レッスンだから、1週間(=7日)で14レッスン。 各レッスンの1回目は平日に毎日やるのであれば、週に5回だから、50回だと50週。 各レッスンの2回目は、1回目の翌日にやるから、週に5回でやはり50週。 各レッスンの1回目と2回目だけで、週に10レッスン。 各レッスンの3回目以降をやれるのは、土曜1回、日曜2回、月曜1回の、週に4レッスンだけ。 計画に無理がありませんか?

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.2

「それぞれのレッスンの1回目をどのペースでやろうとしているのか」というのは、Lesson1の1回目とLesson2の1回目、Lesson2の1回目とLesson3の1回目、をどれくらいの間隔でやろうとしているのか、という意味です。 50回のレッスンを5回ずつやるのを、何日間で終わらせようと思っていますか?

noname#173472
質問者

補足

>Lesson1の1回目とLesson2の1回目、Lesson2の1回目とLesson3の1回目、をどれくらいの間隔でやろうとしているのか 基本的に、平日は毎日レッスンを入れたいと思っています。 平日のうち、2レッスンに満たない日については、どんどん新しいレッスンを入れていきます。 >50回のレッスンを5回ずつやるのを、何日間で終わらせようと思っていますか? これは決めていません。 1日あたりのレッスン数の縛り、総レッスン数、1レッスンの反復頻度が既に決まっているので、 その中で結果的に算出される終了日を終了日としようと思います。

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.1

それぞれのレッスンの1回目をどのペースでやろうとしているのかで、手の打ち方は変わるような気がしますね。 もし、毎日レッスンの1回目をやるなら、第2日以降は、レッスンの1回目と別のレッスンの2回目が必ず重なることになり、どのレッスンでも3回目以降はできなくなりますし。 もし、レッスンの1回目を1週間程度のペースでやるなら、レッスンの1回目から5回目までに各曜日を割り当てるだけで済むでしょうし。 あとレッスンがいくつまであるのかも関係するかも。

noname#173472
質問者

補足

ありがとうございます。 当面は上に書きましたとおり、4週間で5回反復することを想定しています。 インターバルは、+1日、+7日、+14日、+28日です。 レッスン数は50を希望しています。