• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelの振り分けについての使い方)

ExcelでTodoリストの振り分け方法

このQ&Aのポイント
  • ExcelでTodoリストを作成する際に、特定の列に入力した値に応じて他の列に自動的に値を振り分ける方法について説明します。
  • 具体的には、A列にやるべきことを入力し、B列に日付を入力すると、C列にはその日にできるやるべきことの個数が表示され、D列には実際にやるべきことが表示されます。
  • 図を用いて具体的な作業手順を説明し、関数やマクロを活用して自動化する方法をご紹介します。

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

  • ベストアンサー
  • emaxemax
  • ベストアンサー率35% (44/124)
回答No.1

関数ではめんどうそうなのでVBAでやってみました。 これでいかがでしょう? Sub test01()   Dim Rng As Range   Dim c As Range   Dim i As Long   Set Rng = Range("C2", Cells(Rows.Count, "C").End(xlUp))   For Each c In Rng     If c.Value > 0 Then       c.Offset(, 1).Resize(, c.Value).Value = Application.Transpose(Range("A2").Offset(i).Resize(c.Value, 1).Value)       i = i + c.Value     End If   Next End Sub

ManekinekoMagic
質問者

お礼

回答ありがとうございます。 目的の動作を行うことができました。 今後ともよろしくお願いします。 ベストアンサーは2人とも差し上げたいのですが、早く回答いただいたemaxemaxさんに差し上げたいと思います。 ありがとうございました。

その他の回答 (1)

  • mar00
  • ベストアンサー率36% (158/430)
回答No.2

VBAにしてみました。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column <> 3 Then Exit Sub Application.ScreenUpdating = False myRow = 2 For i = 2 To Cells(Rows.Count, 3).End(xlUp).Row myCol = Cells(i, Columns.Count).End(xlToLeft).Column If Cells(i, 4) <> "" Then Range(Cells(i, 4), Cells(i, myCol)).Clear End If Range("A" & myRow & ":A" & myRow + Range("C" & i) - 1).Copy Range("D" & i).PasteSpecial Paste:=xlPasteValues, Transpose:=True Application.CutCopyMode = False myRow = myRow + Range("C" & i) Next i Range("C" & Target.Row + 1).Select Application.ScreenUpdating = True End Sub シート名を右クリック→コードの表示を選択 VBE画面がでてくるので貼り付けてください。 C列のコマ数を入力するとVBAが実行されます。 ご希望の動作であればよいのですが。

ManekinekoMagic
質問者

お礼

回答ありがとうございます。 目的の動作を行うことができました。 今後ともよろしくお願いします。 ベストアンサーは2人とも差し上げたいのですが、早く回答いただいたemaxemaxさんに差し上げたいと思います。 ありがとうございました。