- 締切済み
IF関数 エクセル
A B C D E F G H 1 会議室 部署名 会議 打合せ 2 9:00 開始 終了 開始 終了 3 10:00 C部署 C部署 10:00 11:00 13:00 14:00 4 11:00 B部署 B部署 11:00 13:00 5 12:00 B部署 D部署 14:00 15:00 6 13:00 C部署 ・ 7 14:00 D部署 ・ 8 15:00 D3~Hを手入力すると、B2のスケジュール表に部署名が自動反映される式を教えてください。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- KURUMITO
- ベストアンサー率42% (1835/4283)
作業列を設けて対応します。 I3セルには次の式を入力してJ3セルまでオートフィルドラッグコピーしたのちに下方にもオートフィルドラッグします。 =IF(ROW(A1)>COUNT(E:E)+COUNT(G:G),"",IF(ROW(A1)<=COUNT(E:E),INDEX(E:E,MATCH(SMALL(E:E,ROW(A1)),E:E,0)),INDEX(G:G,MATCH(SMALL(G:G,ROW(A1)-COUNT(E:E)),G:G,0)))) K3セルには次の式を入力して下方にオートフィルドラッグコピーします。 =IF(I3="","",IF(COUNTIF(E:E,I3),INDEX(D:D,MATCH(I3,E:E,1)),IF(COUNTIF(G:G,I3),INDEX(D:D,MATCH(I3,G:G,1)),""))) その後にB3セルには次の式を入力して下方にオートフィルドラッグコピーします。 =IF(COUNTIF(I:I,TIME(HOUR(A3),MINUTE(A3),0)),INDEX(K:K,MATCH(TIME(HOUR(A3),MINUTE(A3),0),I:I,0)),IF(COUNTIF(J:J,TIME(HOUR(A3),MINUTE(A3),0))=0,B2,"")) 時間でMATCH関数を使うときにはなかなか良いデータが得られませんでしたのでTIME関数を導入しています。
- mar00
- ベストアンサー率36% (158/430)
関数ではないですが シート名のところで右クリック→コードの表示を選択→VBA画面が出てきますので貼り付けてください。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column <> 5 And Target.Column <> 7 Then Exit Sub On Error GoTo LINE If Range("B" & Hour(Target) - 7) <> "" Then X = MsgBox("すでに予定が入っています。" & vbNewLine & "変更しますか?。", vbYesNo) If X = vbYes Then Range("B" & Hour(Target) - 7) = Range("D" & Target.Row) End If Else Range("B" & Hour(Target) - 7) = Range("D" & Target.Row) End If LINE: End Sub 開始時間を入力すると表示されます。
- 178nso
- ベストアンサー率31% (21/66)
ただ D3の文字をB2セルに表示させるのであれば、IF関数ではなく B2セルに =D3 と入れれば表示はされます。
- 178nso
- ベストアンサー率31% (21/66)
「B2のスケジュール表」ってなんですか? B2のセルにD3を表示するってことですか? もう少し詳しく説明お願いします。
- aokii
- ベストアンサー率23% (5210/22062)
全く同じ質問を出すことは自粛して下さい。
補足
B2のセルにD3を表示するってことです。