- ベストアンサー
ExcelでTodoリストの振り分け方法
- ExcelでTodoリストを作成する際に、特定の列に入力した値に応じて他の列に自動的に値を振り分ける方法について説明します。
- 具体的には、A列にやるべきことを入力し、B列に日付を入力すると、C列にはその日にできるやるべきことの個数が表示され、D列には実際にやるべきことが表示されます。
- 図を用いて具体的な作業手順を説明し、関数やマクロを活用して自動化する方法をご紹介します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
関数ではめんどうそうなので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
その他の回答 (1)
- mar00
- ベストアンサー率36% (158/430)
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が実行されます。 ご希望の動作であればよいのですが。
お礼
回答ありがとうございます。 目的の動作を行うことができました。 今後ともよろしくお願いします。 ベストアンサーは2人とも差し上げたいのですが、早く回答いただいたemaxemaxさんに差し上げたいと思います。 ありがとうございました。
お礼
回答ありがとうございます。 目的の動作を行うことができました。 今後ともよろしくお願いします。 ベストアンサーは2人とも差し上げたいのですが、早く回答いただいたemaxemaxさんに差し上げたいと思います。 ありがとうございました。