ワークシートイベントを使用するのは解ったのですが、どう記述すれば、、
A B C D E
1 ID 担当者 ID 氏名
2 3 山田 1 佐藤
3 1 佐藤 2 斉藤
4 3 山田
で、A列にID番号を入力したときに
隣のB列に関数=VLOOKUP(A4,$D$2:$E$4,2,FALSE)が
自動的に入力されるようなマクロを作成したいのです
A列のデータはこれからどんどん入力していきます
D列F列は担当者管理の枠で固定です
数式を入力したいのですね?
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
Application.EnableEvents = False
If Target.Value = "" Then
Target.Offset(0, 1).Value = ""
Else
Target.Offset(0, 1).FormulaR1C1 = "=VLOOKUP(RC[-1],R2C4:R4C5,2,FALSE)"
End If
Application.EnableEvents = True
End Sub
※ (1) 入力IDは、1つとします。
(2) IDがクリアーされたら、式も消えるものとします。
もし、なんかシートが反応しなくなった様な状況に陥ったら、、
イミディエートウィンドウを出し、
Application.EnableEvents = True と入力し、
Enterキーを押下して下さい。
A B C D E
1 ID 担当者 ID 氏名
2 3 山田 1 佐藤
3 1 佐藤 2 斉藤
4 3 山田
で、A列にID番号を入力したときに
隣のB列に関数=VLOOKUP(A4,$D$2:$E$4,2,FALSE)が
自動的に入力されるようなマクロを作成したいのです
A列のデータはこれからどんどん入力していきます
D列F列は担当者管理の枠で固定です
数式を入力したいのですね?
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
Application.EnableEvents = False
If Target.Value = "" Then
Target.Offset(0, 1).Value = ""
Else
Target.Offset(0, 1).FormulaR1C1 = "=VLOOKUP(RC[-1],R2C4:R4C5,2,FALSE)"
End If
Application.EnableEvents = True
End Sub
※ (1) 入力IDは、1つとします。
(2) IDがクリアーされたら、式も消えるものとします。
もし、なんかシートが反応しなくなった様な状況に陥ったら、、
イミディエートウィンドウを出し、
Application.EnableEvents = True と入力し、
Enterキーを押下して下さい。
アンケート表を作ってますが、□にチェックを付けられればと思ってます。
(例)1.この店を何で知ったか?
□友達 □新聞 □通りかかって □HP
の”□”にチェックマークをパソコン上で入れられるようにしたいのです。
ツールバーの中にフォームというツールバーがあり、
その中にチェックボックスというのがありますが・・・
(例)1.この店を何で知ったか?
□友達 □新聞 □通りかかって □HP
の”□”にチェックマークをパソコン上で入れられるようにしたいのです。
ツールバーの中にフォームというツールバーがあり、
その中にチェックボックスというのがありますが・・・
[WindowsXP] [Excel2002]
COUNTBLANKで=COUNTBLANK(A1:A12)が通常だと思うのですが一行おきにはできないのでしょうか。
=COUNTBLANK(A1,A3,A5)見たいにできるのであれば教えてください。
=SUMPRODUCT(MOD(ROW(A1:A12),2)*(A1:A12=""))
COUNTBLANKで=COUNTBLANK(A1:A12)が通常だと思うのですが一行おきにはできないのでしょうか。
=COUNTBLANK(A1,A3,A5)見たいにできるのであれば教えてください。
=SUMPRODUCT(MOD(ROW(A1:A12),2)*(A1:A12=""))
ある日付を入力すると、その日付が属する年がうるう年なら「366」、
そうでなければ「365」を返す関数(あるいは関数の組み合わせ)はありますでしょうか。
A1に日付が入力されるとして、
=DATE(YEAR(A1)+1,1,1)-DATE(YEAR(A1),1,1)
=SUMPRODUCT(DATE(YEAR(A1)+ROW(1:2)-1,1,1)*{-1;1})
=365+(MONTH(DATE(YEAR(A1),2,29))=2)
西暦年を4で割って、
割り切れればうるう年
余りがあれば平年
そうでなければ「365」を返す関数(あるいは関数の組み合わせ)はありますでしょうか。
A1に日付が入力されるとして、
=DATE(YEAR(A1)+1,1,1)-DATE(YEAR(A1),1,1)
=SUMPRODUCT(DATE(YEAR(A1)+ROW(1:2)-1,1,1)*{-1;1})
=365+(MONTH(DATE(YEAR(A1),2,29))=2)
西暦年を4で割って、
割り切れればうるう年
余りがあれば平年
出社時間帯が深夜勤務時間帯の場合もある勤務管理表を作成しようとしています。
一日の勤務時間が24時間を越えないと想定され、
(すみません、労働基準法越えてますが、、そういう表を作りたいというところからのようなので。。)
深夜時間帯に開始時間がある場合の計算がうまくいきません。
条件として
1)9時間、ないしは10時間を越える場合(労働時間8時間+C:休憩時間)、残業時間として計算する。
2)22:00〜翌5:00の勤務の場合深夜残業として、残業時間とは別として扱い、計算する。
A B C D E F
1 出勤 退勤 休憩時間 労働時間 残業時間 深夜22:00〜5:00
2 10:00 19:00 1:00 9:00 0:00
3 9:00 1:00 1:00 16:00 7:00 3:00
4 3:00 20:00 2:00 17:00 7:00 2:00
5 3:00 1:00 2:00 22:00 12:00 5:00
上記のような表で作成したいのですが、 A〜C列は入力し、D〜Fを計算で出したいと思います。
入力する関数をどうすればよいか教えてください。
Excel2002/WindowsXPです。
D2=B2-A2+(A2>B2)
E2=MAX(0,D2-C2-"8:")
F2=TEXT("5:"-MIN(A2,"5:")+MAX(0,MIN("29:",B2+(A2>B2))-"22:"),"[h]:mm;;;")
として下にフィルコピーでどうでしょうか。
一日の勤務時間が24時間を越えないと想定され、
(すみません、労働基準法越えてますが、、そういう表を作りたいというところからのようなので。。)
深夜時間帯に開始時間がある場合の計算がうまくいきません。
条件として
1)9時間、ないしは10時間を越える場合(労働時間8時間+C:休憩時間)、残業時間として計算する。
2)22:00〜翌5:00の勤務の場合深夜残業として、残業時間とは別として扱い、計算する。
A B C D E F
1 出勤 退勤 休憩時間 労働時間 残業時間 深夜22:00〜5:00
2 10:00 19:00 1:00 9:00 0:00
3 9:00 1:00 1:00 16:00 7:00 3:00
4 3:00 20:00 2:00 17:00 7:00 2:00
5 3:00 1:00 2:00 22:00 12:00 5:00
上記のような表で作成したいのですが、 A〜C列は入力し、D〜Fを計算で出したいと思います。
入力する関数をどうすればよいか教えてください。
Excel2002/WindowsXPです。
D2=B2-A2+(A2>B2)
E2=MAX(0,D2-C2-"8:")
F2=TEXT("5:"-MIN(A2,"5:")+MAX(0,MIN("29:",B2+(A2>B2))-"22:"),"[h]:mm;;;")
として下にフィルコピーでどうでしょうか。





