• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マトリクス表計画データから日付参照する方法)

マトリクス表計画データから日付参照する方法

このQ&Aのポイント
  • Excelのマトリクス表計画データから、特定の日付を参照する方法について教えてください。
  • マトリクス表計画データの中には、日付やアイテム名などの情報があります。
  • そのデータから、特定のシリアル番号に対応する日付を取得する方法を早く教えてください。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

質問の意図は分かったつもりですが、 (1)serialシートにアイテムごとに集計する作業 (2)serial1シートに各アイテムを展開する作業 この2つは避けたい作業です。 (1)は関数でできるのでいいとして、 (2)を考えましたが、質問に例示のある、「4」を4行に分ける必要があるとすると、関数では考えたくありません。多分できないと思います。「数値はmax100くらいまで」とあるので、なおさらです。個人的にはこの作業が一番大変に思えました。で、マクロで対応しました。 シートは、「work」と「serial1」で、「serial」は使っていません。「work」の日付は日付属性としています。月により日数が違いますが、あまり影響はないでしょう。 また、アイテム数が分からないので、「itemNum=」に数値をセットしてください。自動認識もできますが、あえて入力としています。多目で構いません。 マクロは質問の内容を順に書いただけです。久しぶりに分かりやすい質問でした。(勘違いしてる?)当方、Win10、Excel2010です。 Sub setPlan()  Const itemNum = 1000 '// workシートの行数(アイテム数)  Dim rw As Integer   '// workシートの行カウンタ  Dim col As Integer  '// workシートの列カウンタ  Dim rwWrite As Long  '// serial1シートの行カウンタ  Dim nDay As Integer  '// 各日のアイテム数  Dim n As Integer   '// 各日のアイテム数カウンタ  Dim nMonth As Integer '// 同一月のアイテム数カウンタ  Dim startDay As Date '// 最初の日付(H3)  Dim item As String  '// アイテム名    With Worksheets("work").Range("H3")   startDay = .Offset(-2, 0).Value   For rw = 1 To itemNum    nMonth = 0    item = .Offset(rw - 1, -6)    For col = 1 To 31     nDay = .Cells(rw, col)     If nDay <> 0 Then      With Worksheets("serial1")       For n = 1 To nDay  '// 分解        nMonth = nMonth + 1        rwWrite = rwWrite + 1        .Cells(rwWrite, 1) = item        .Cells(rwWrite, 2) = nMonth        .Cells(rwWrite, 3) = startDay + col - 1       Next      End With     End If    Next   Next  End With End Sub

3620313
質問者

お礼

ありがとうございます。 ばっちりでした。 処理速度も速く助かりました。

3620313
質問者

補足

(1)serialシートにアイテムごとに集計する作業 (2)serial1シートに各アイテムを展開する作業 → そうなんです (1)はたいしたことないですが、 (2)は苦労しました。マクロで対応しました。

その他の回答 (2)

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.2

アイテム2が12あるのがわからないのですが3でよければ C1に =IFERROR(INDEX(work!$H$1:$AL$4,1,MATCH(LARGE((INDIRECT("work!$H$"& MATCH(A1,work!B:B,0) & ":$AL$" & MATCH(A1,work!B:B,0))<>"")*1/COLUMN($H$2:$AL$2),ROWS(INDIRECT("$A$1:$A" & COUNTIF($A$1:A1,A1)))),1/COLUMN($H$2:$AL$2),0)),"") で配列数式にして下方向にコピーしてください。 Shift+CtrlでEnter 参考にしたサイト https://nyanto.jimdo.com/エクセル関数-問題解決/条件に合うデータ全ての抽出方法1/条件合うデータ抽出2/

3620313
質問者

お礼

回答ありがとうございます。 参考にしたサイトを見て勉強します。(^^)/

3620313
質問者

補足

アイテム2が12あるのがわからないのですが → アイテム2は、日付12/5が4、日付12/12が4、日付12/19が4の様に数値が入っている。 4+4+4=12 です

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

この説明では、課題がよくわからない。 簡単なシートでデータ例を作って、質問に張り付けては。 マトリックスといった、難しい言葉を使っても意味の理解の足しにならない。 普通のエクセルのシートデータは、マトリックスと言えなくもないだろう。 業界・勤務会社の慣用用語か? >serial1シートでC列にworkシート これもシート名=serial1、シート名=workとした方が明確。 コンピュター用語でserialやworkという言葉を使うので、かえって紛らわしい。 マトリックスも本来は数学用語で固有の意味があるのが邪魔をする。 ーー まあこの質問説明でも、わかってくれて、回答は出るかもしれないが。 それで良しとするか。

3620313
質問者

補足

この説明では、課題がよくわからない → 下記がやりたい内容です。 serial1シートでC列にworkシートで対応する日付をもってきたい 最後にもう一度 workシートのマトリクスデータから、serial1シートへシリアル番号に対しての日付データを早く持ってこられる計算式orマクロを教えていただきたく。 と表現しています。 簡単なシートでデータ例を作って、質問に張り付けては。 → これは、そう思いましたが、それに相当する例をあげて説明したつもりです。 最終形の構成はありませんでしたが。 マトリックスといった、難しい言葉を使っても意味の理解の足しにならない → マトリクスは、別に難しい言葉ではないと思います。一般用語です。

関連するQ&A