プロが教える店舗&オフィスのセキュリティ対策術

INDEX,MATCHを用いて「国語」が「何限目」に入っているのかをB3に、
「国語」が「何曜日」に入っているのかをC3に返したいです。
(画像をご覧くださいませ。)

現在は国語が何限目に入っているのかだけは何とか出来ました。
ただ、式が =INDEX(E3:E8,MATCH(A3,F3:F8,0))&INDEX… 
と範囲を曜日毎に分けて&で繋げておりスッキリしない上に、「1限」が重複しており、カンマ区切りもないため非常に見づらいです。
そして画像のように、社会や体育など毎日ない教科は#N/Aとエラーが出てしまいます。
そのためC3のセルでは、
・&で繋げるのではなく、一度に広い範囲を選択したい。
・重複をなくしたい。
(重複をなくした場合並びは1限、2限、3限…など数字が大きくなる順でなくて結構です、曜日の順に並んでいて大丈夫です。)
・カンマ区切りをつけて見やすくしたい。
・#N/Aがでないようにしたい。
です。

そして大問題が「国語」が「何曜日」に入っているかを求める式になります…。
これがまったくもって分かりません。
上の数式の範囲を変えただけではだめでした。

大変悩んでおります、ご教授お願い致します。

「Excel2013にて、INDEX,MA」の質問画像

A 回答 (1件)

ずいぶん、いろんなリクエストがあるので、ダメかもしれませんが、


最初、マクロで片付けてしまいました。

Sub ListCounts()
 Dim Subjects
 Dim x As Long, i As Long, y As Variant, j As Long
 Subjects = Split("国語,算数,理科,社会,体育,保健,英語,図画", ",")
 
 ReDim Preserve Subjects(1 To 8)
 ReDim Stock(1 To 8)
 ReDim Stock2(1 To 8)
 For x = 1 To 8 '科目数 8
  For j = 1 To 6 '月曜から金曜日まで
   For i = 1 To 6 '6限まで
     '拾い上げる最初のセル F2
    If Subjects(x) = Range("F2").Cells(i, j).Value Then
     y = Choose(j, "月", "火", "水", "木", "金")
     Stock(x) = Stock(x) & i & "限"
     Stock2(x) = Stock2(x) & y
     y = ""
    End If
   Next i
  Next j
 Next x
  ListPaste Stock, Stock2
End Sub
Sub ListPaste(Stock, Stock2)
 Dim i As Long, j As Long
 Range("B2").Resize(8, 2).Font.Size = 9 '文字を小さくする
 For j = 1 To 2
  For i = 1 To 8
   If j = 1 Then
    '書き出す最初のセル
    Range("B2").Cells(i, j).Value = Stock(i)
   Else
    Range("B2").Cells(i, j).Value = Stock2(i)
   End If
  Next i
 Next j
End Sub


関数では、B12から、このような数式でやってみました。
=IFERROR(MATCH($A12,OFFSET($F$2:$F$7,,COLUMN(A1)-1),0)&"限","")
「Excel2013にて、INDEX,MA」の回答画像1
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!