ジメジメする梅雨のお悩み、一挙解決! >>

エクセル:
1人で複数台のPCを使用する職場で、各スタッフの最早・最遅のログイン・ログオフ時刻
を調査中です。

表①から、関数を使って、表②のセル「B3」「C3」の時刻を抽出する数式を知りたいです。
水野和美は、5/30には3台のPCを使用し、7:18~0:45(5/31の深夜)迄、稼働した。「B3」「C3」
沢田明は、5/31には2台のPCを使用し、13:00~1:10(6/1の深夜)迄、稼働した。「D4」「E4」

早くて正確な方法であれば、数式以外でもかまいませんが、VBAは私にはできません。


表①
A B C D E F
1 氏名 端末 ログイン ログオフ
2 水野和美 甲 2017/5/30 8:27 2017/5/30 11:25
3 水野和美 乙 2017/5/30 7:18 2017/5/30 18:51
4 水野和美 丙 2017/5/30 13:02 2017/5/31 0:45
5 水野和美 甲 2017/5/31 13:35 2017/5/31 16:35
6 水野和美 丙 2017/5/31 15:30 2017/6/1 0:36
7 沢田明 梅 2017/5/31 13:00 2017/5/31 20:45
8 沢田明 甲 2017/5/31 17:32 2017/6/1 1:10


表②
A B C D E F
1 水野和美 沢田明
2 ログイン ログオフ ログイン ログオフ
3 2017/5/30 7:18 0:45
4 2017/5/31 13:35 0:36 13:00 1:10

A 回答 (1件)

「数式以外でもかまいませんが、VBAはできません」ということは、残りは手作業になりますが・・・。


作業列を作って、地道に求めましょう。
例えば、こんな感じです。
ここまで編集できれば、後は前回の応用で対応できるはずです。

【G2】=E2-C2+F2
【H2】=COUNTIFS(A$2:A2,A2,C$2:C2,C2)
【I2】=COUNTIFS(A:A,A2,C:C,C2)
【J2】=IF(H2=1,MIN(OFFSET(D2,,,I3)),"")
【K2】=IF(H2=1,MAX(OFFSET(G2,,,I3)),"")
「エクセル:PC一人複数台使用の最早・最遅」の回答画像1
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
お礼が遅くなってすみません。

OFFSETについて初めて知りました。

お礼日時:2017/07/17 13:58

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

このQ&Aと関連する良く見られている質問

Qコピー&ペーストではなく数式やエクセルの機能を使ってデータを反映させたい。

下記の「表①」のエクセルデータを、「表②」に反映させたいです。
「表②」のB3セルに、数式を入れて、「表①」のログイン・ログオフ時刻を「表②」へ
自動反映させたいのですが、どのような式を入れたらいいかがわかりません。

現状は、目視とコピー&ペーストで表①→表②へ貼りつけていますが、
スタッフの数が多いのとシフト勤務で出勤日数も時間もバラバラで、作業が大変です。

また、早くて正確なら他の方法でもいいです。
よろしくお願いします。


表①
A B C D E
1 氏名 日付 ログイン 日付 ログオフ
2 田中 舞子 2017/5/16 8:21:35 2017/5/16 17:34:38
3 田中 舞子 2017/5/17 8:22:40 2017/5/17 17:35:00
4 田中 舞子 2017/5/18 8:28:02 2017/5/18 17:35:55
5 田中 舞子 2017/5/19 8:22:09 2017/5/19 17:34:18
6 田中 舞子 2017/5/22 8:18:03 2017/5/22 17:33:13
7 三田 建造 2017/5/23 8:19:55 2017/5/23 17:39:44
8 三田 建造 2017/5/25 8:21:03 2017/5/25 17:38:04
9 三田 建造 2017/5/26 8:17:45 2017/5/26 17:31:54
10 三田 建造 2017/5/29 8:19:42 2017/5/29 17:32:39
11 三田 建造 2017/5/30 8:20:12 2017/5/30 17:33:26
12 牧 重三 2017/5/31 16:18:33 2017/5/31 23:31:36
13 牧 重三 2017/6/1 16:20:08 2017/6/1 23:35:33
14 牧 重三 2017/6/2 17:18:35 2017/6/2 23:41:05
15 牧 重三 2017/6/5 15:20:00 2017/6/5 23:31:54
16 牧 重三 2017/6/6 19:22:05 2017/6/6 23:41:14
17 長岐 知美 2017/6/7 8:25:48 2017/6/7 17:34:38
18 長岐 知美 2017/6/8 8:26:24 2017/6/8 17:36:52
19 長岐 知美 2017/6/9 8:26:01 2017/6/9 17:34:08
20 長岐 知美 2017/6/12 8:19:24 2017/6/12 17:32:02
21 篠田 亜紀 2017/5/21 8:19:14 2017/5/21 17:32:29
22 柿田 輝未 2017/5/28 7:34:55 2017/5/28 17:17:54
23 荒元 耕平 2017/6/4 7:32:49 2017/6/4 17:32:50
24 佐田 容子 2017/6/11 8:18:35 2017/6/11 17:41:05
25 藤島 澄人 2017/6/12 8:25:15 2017/6/12 17:59:55
26 藤島 澄人 2017/6/13 8:45:31 2017/6/13 17:41:06
27 藤島 澄人 2017/6/14 8:05:34 2017/6/14 17:28:14
28 藤島 澄人 2017/6/15 8:13:25 2017/6/15 17:30:24


表②
   A B C D E F G
1 田中 舞子 三田 建造 牧 重三 ・・・・
2 日付 ログイン ログオフ ログイン ログオフ ログイン ログオフ
3 2017/5/16 B3
4 2017/5/17
5 2017/5/18
6 2017/5/19
7 2017/5/20
8 2017/5/21
9 2017/5/22
10 2017/5/23
11 2017/5/24
12 2017/5/25
13 2017/5/26
14 2017/5/27
15 2017/5/28
16 2017/5/29
17 2017/5/30
18 2017/5/31
19 2017/6/1
20 2017/6/2
21 2017/6/3
22 2017/6/4
23 2017/6/5
24 2017/6/6
25 2017/6/7
26 2017/6/8
27 2017/6/9
28 2017/6/10
29 2017/6/11
30 2017/6/12
31 2017/6/13
32 2017/6/14
33 2017/6/15

下記の「表①」のエクセルデータを、「表②」に反映させたいです。
「表②」のB3セルに、数式を入れて、「表①」のログイン・ログオフ時刻を「表②」へ
自動反映させたいのですが、どのような式を入れたらいいかがわかりません。

現状は、目視とコピー&ペーストで表①→表②へ貼りつけていますが、
スタッフの数が多いのとシフト勤務で出勤日数も時間もバラバラで、作業が大変です。

また、早くて正確なら他の方法でもいいです。
よろしくお願いします。


表①
A B ...続きを読む

Aベストアンサー

表①のB列ですが、シリアル値「2017/5/16 8:21:35」を表示形式で「2017/5/16」と表示していませんか?もしそうであればNGです。B2セルは時刻の部分をゼロにしてください。

2人ログオンする日がある件ですが、残念ながら、この方式では実現できません。
No.1 chonamiさんの案が一番簡単そうです。たぶん、こんな感じを想定していると思われます。

【B3セル】=SUMIFS(表①!$C:$C,表①!$A:$A,B$1,表①!$B:$B,$A3)
※C3セルは、上記を参考にご自分で考えてみて下さい。

Q入力文字を逆さに

写真のようにA1~A4の入力文字をA5~A8に逆さにして入力する方法を教えてください。
エクセル2010と2013を使用しています。
よろしくお願いいたします。

Aベストアンサー

こんなのはどうでしょうか。
「セルの書式設定」-「配置」で、文字列の方向を90度、および、-90度にします。

ちなみに、F1~I1は、A1~D1を数式で参照します。参照順番はお好きなように変更してください。
さらに云うなら、品名や生産日?の一覧を別途作成して、画像の印刷用シートは、それを参照するようにした方が、入力も楽ですね。

Qエクセル2016 にてご質問をお願いいたします。

シート1、シート2、シート3が3個あります。

全てのシートのA1セルに同じ文字や数字を入れたいと思っております。

シート1でA1セルに入力したものがシート2、シート3も同じ数字になる。
シート2でA1セルに入力したものがシート1、シート3も同じ数字になる。

どのページでA1の文字を入力や修正を行うとすべてのシートが同じになるようにしたいです。

どうかよろしくお願いいたします。

Aベストアンサー

「ThisWorkbook」モジュールのWorkbook_SheetChangeイベントプロシジャに下記のコードを書いちゃうってのは、いかがでしょう。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim r As Range
Set r = Intersect(Target, Sh.Range("A1"))
If r Is Nothing Then Exit Sub
Application.EnableEvents = False
Select Case Sh.Name
Case "Sheet1"
Sheets("Sheet2").Range("A1").Value = r.Value
Sheets("Sheet3").Range("A1").Value = r.Value
Case "Sheet2"
Sheets("Sheet1").Range("A1").Value = r.Value
Sheets("Sheet3").Range("A1").Value = r.Value
Case "Sheet3"
Sheets("Sheet1").Range("A1").Value = r.Value
Sheets("Sheet2").Range("A1").Value = r.Value
End Select
Application.EnableEvents = True
End Sub

「ThisWorkbook」モジュールのWorkbook_SheetChangeイベントプロシジャに下記のコードを書いちゃうってのは、いかがでしょう。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim r As Range
Set r = Intersect(Target, Sh.Range("A1"))
If r Is Nothing Then Exit Sub
Application.EnableEvents = False
Select Case Sh.Name
Case "Sheet1"
Sheets("Sheet2").Range("A1").Value = r.Value
Sheets("Sheet3").Range("A1").V...続きを読む

Qエクセルで三つの条件での参照する方法。 お世話様です。 コード 項目 7月 8月 9月 10月 11

エクセルで三つの条件での参照する方法。
お世話様です。

コード 項目 7月 8月 9月 10月 11月 12月
1234 野菜 8 11
9876 肉類 5 4
小計 5 8 11 4
2345 魚類 12 8
3456 麺類 1 6
小計 1 6
合計

このようなデータがあります。
コードは1000くらいあります。
小計も100くらいあります。

別シートにこれよりも項目が多い表があります。
この表に上記データを反映させたいです。

作業列を作りコードと項目を&で合体させ
ます。
それを検索値とし、別シートの7月の列にvlookup関数にします。
コードの列をフィルタ掛けし小計、合計を非表示にします。
貼り付け。

これを月別に貼り付けしようと思います。
他に効率良い方法ありますか?
言葉足らずな点は補足します。
よろしくお願いいたします。

エクセルで三つの条件での参照する方法。
お世話様です。

コード 項目 7月 8月 9月 10月 11月 12月
1234 野菜 8 11
9876 肉類 5 4
小計 5 8 11 4
2345 魚類 12 8
3456 麺類 1 6
小計 1 6
合計

このようなデータがあります。
コードは1000くらいあります。
小計も100くらいあります。

別シートにこれよりも項目が多い表があります。
この表...続きを読む

Aベストアンサー

素朴な確認をば。
小計行の数値 5、8、11、4 はどのセルとどのセルとの小計になっているの?
「あれは、単に書いたまでで、実はデタラメ!」なんて言わないでネ。回答者は真剣なので。

Q西暦をS〇〇年〇月〇日へ

1964/11/10と入力していましてこれを
S39年11月10日と表示したいのですがどうすればいいのか教えて下さい。

Aベストアンサー

セルの書式設定でユーザ定義を加えれば、
お望みどおりの表示形式が作成できます。

Qエクセルの式がわかりません、教えてください。

fujillinさん解り易くしました。

報告書を作成する際、入力内容から、A(業務報酬)
とB(預り金)を選ばせようとしていますが、うまく表示されません。どこがいけないのでしょうか?

パターンは4つありますが、
もし、$AP$7="×" ×で(請求書が弊社宛ではなくて)
NOT('!$AL$7="")文字式が空欄じゃなかったら(下請会社名の記載が有ったら)
B =$V$18(預り金)

もし、$AP$7="×" ×で(請求書が弊社宛ではなくて)
NOT('!$AL$7="")文字式が空欄じゃなかったら(下請会社名の記載が無かったら)
この事例はあり得ませんので削除

もし、$AP$7="○" ○で(請求書が弊社宛)
('!$AL$7="")文字式が空欄だったら(下請会社名の記載が無かったら)
A =$V$19(業務報酬)金額的には100%
もし、$AP$7="○" ○で(請求書が弊社宛)
NOT('!$AL$7="")文字式が空欄じゃなかったら(下請会社名の記載が有ったら)
A =$V$19(業務報酬)金額的には50%

を選ばせようとしています。

疑問点の $AT$7=(支払金額)は上記の式に関係ないものとして削除しました。

以下の文書では、もし、$AP$7="×"(請求書が弊社宛ではなくて)で $AT$7=""(支払金額の記載が無かったら)A=$V$19(業務報酬)

もし、$AP$7="○"(請求書が弊社宛で)、,NOT($AL$7==""(下請会社名の記載が有ったら)、A=$V$19(業務報酬)
そうでなければ、B=$V$18(預り金)

=IF(AND($AP$7="×",$AT$7=””),$V$19,IF(OR($AP$7="○",NOT($AL$7="")),'$V$19,$V$18))

改善策1として
=IF($AP$7="×",$V$18,$V$19)を入れてみましたが、
もし請求書が弊社宛では無ければ、預り金、そうでなければ業務報酬

もし、$AP$7="○" ○で(請求書が弊社宛)
($AL$7="")文字式が空欄だったら(下請会社名の記載が無かったら)
A =$V$19(業務報酬)
がうまくいきません。


改善策2として
=IF(OR($AP$7="○",NOT($AL$7="")),$V$18,$V$19)で作成しましたが、間違っていました。
(請求書が弊社宛)または(下請会社名の記載が有ったら)、業務報酬、そうでなければ預り金


パターン例
請求書が弊社宛 請求書が弊社宛じゃない
下請会社有 業務報酬 預り金
下請会社無 業務報酬 -

fujillinさん解り易くしました。

報告書を作成する際、入力内容から、A(業務報酬)
とB(預り金)を選ばせようとしていますが、うまく表示されません。どこがいけないのでしょうか?

パターンは4つありますが、
もし、$AP$7="×" ×で(請求書が弊社宛ではなくて)
NOT('!$AL$7="")文字式が空欄じゃなかったら(下請会社名の記載が有ったら)
B =$V$18(預り金)

もし、$AP$7="×" ×で(請求書が弊社宛ではなくて)
NOT('!$AL$7="")文字式が空欄じゃなかったら(下請会社名の記載が無かった...続きを読む

Aベストアンサー

またしても添付画像が判別できないですけど。
細かく書いても表示される画像は縮小されてしまうので、
それでもわかるように工夫(画像をトリミング;必要な部分以外は切り捨てる)する必要があります。
その方法は質問に関係ないので省きます。

画像のものを憶測で簡略化したものを添付します。
これで式を考えてみます。

私が回答投稿して良い空気なのかわからないけど…

■APが「○」の場合
ALやAYの内容がどうであれ、結果は全て「業務報酬」になります。

これを、IF関数を使って表すと以下のようになります。

=IF(AP="○","業務報酬",【AP="×"の場合の処理】)   …【式1】

これで、条件①~④の場合の処理は完了。

■APが「×」の場合
結果が「業務報酬」と「預り金」のどちらかになります。
どの条件で結果が分岐するのか、見てみると・・・

AYに金額の記入があるか、無い(空欄)かで違います。

これを、IF関数を使って表すと以下のようになります。

=IF(AY<>"","業務報酬","預り金")   …【式2】

これで、条件⑤~⑧の場合の処理は完了。

■合体!

(式1)と(式2)を合体させると、条件①~⑧全てを処理できる式になります。
ではやってみましょう。

=IF(AP="○","業務報酬",【AP="×"の場合の処理】)
   ↓
=IF(AP="○","業務報酬",【式2】)
   ↓
=IF(AP="○","業務報酬",IF(AY<>"","業務報酬","預り金"))   …完成!

※もちろん、「AP」「AY」だけだとセルになっていないので、行番号も加えて下さい。


■疑問
あくまで、私が画像から読み取った条件で考えたのですが

AL(業者名の有無)については、結果表示させるにあたり、条件として不要だと思います。

条件④と条件①の違いは?(画像で判別不可)

条件④と条件⑧は無いパターンとのことでしたので、
データミスでも存在しえないないものと解釈しまして、
敢えてそのようなケースが合った場合のエラー処理などは含めていません。

---------------------
★別解
添付した表を前提条件としての別解を。

条件がいくつもあっても、結果が「預り金」となるパターンは条件⑦、ただ1つのみ。

そこだけをIFで判別します。

=IF(AND(AP="×",AY=""),"預り金","業務報酬")

こんなにシンプルになります。
※もちろん、「AP」「AY」だけだとセルになっていないので、行番号も加えて下さい。

またしても添付画像が判別できないですけど。
細かく書いても表示される画像は縮小されてしまうので、
それでもわかるように工夫(画像をトリミング;必要な部分以外は切り捨てる)する必要があります。
その方法は質問に関係ないので省きます。

画像のものを憶測で簡略化したものを添付します。
これで式を考えてみます。

私が回答投稿して良い空気なのかわからないけど…

■APが「○」の場合
ALやAYの内容がどうであれ、結果は全て「業務報酬」になります。

これを、IF関数を使って表すと以下のようになります...続きを読む

QExcel条件付き書式での指定した日付を塗りつぶす方法について

お世話になっております。
添付画像を見本と致します。
BセルからCセルの15日前を塗りつぶし処理をしたいのですがどの様に条件付き書式を
構成すればよろしいのかご教示をいただきたい内容になります。

宜しくお願い致します。

Aベストアンサー

( ‥)ン? 「2017/7/15」前までを塗りつぶしたいという事でいいのかな?
だとして・・・
セルB4~F4までを範囲してしておき、条件付き書式より「新しいルール」から
「数式を使用して・・・」で、入力欄に 「=B3<$E$3」の式を入れ、
書式より塗りつぶしの色を設定→「OK」→「OK」にすると希望通りに。

Qエクセル 日付けと曜日

病院なんかで お薬をもらってまた次回 来院するのですが、たとえば、一週間単位で次回も主治医のいる火曜日にという特定の曜日にしたい場合、14日分、28日分、56日分などとするのはいいのですが、19日分などとしてお薬なくなったから来ましたとして曜日が合わない場合困ります。19日の前の直近の火曜日はいつの日日(ひにち)かをエクセルで表すのにはどうすればいいのでしょうか。

Aベストアンサー

コメントいただいた内容を反映して修正しました。

[B1]に受診日を入力します。

[B2]に処方された薬の日数を入力します。

[B3]は薬がなくなる日を計算します。式は以下の通り
=B1+B2

[B4]は薬が無くなる前の火曜日に当たる日を計算します。
=B3-WEEKDAY(B3)+WEEKDAY(B1)+IF(WEEKDAY(B3)<WEEKDAY(B1),-7,0)

日付の右に曜日を表示しています。
[C1]
=B1
と式を入れ、
C1セルで、右クリック→ セルの書式設定 → 表示形式
右にあるユーザ書式のところに「aaa」と入力してok
これで曜日が表示されます。
C1セルをC3、C4セルにコピー貼り付けすると、
薬のなくなる日、次回受診日の曜日も表示されます。

次回受診日について、
たとえば【7/13に14日分処方】されると、きっちり2週間後の【7/27】という結果になりますが、
きっちりなくなる日ではなく余裕を持って1週間前【7/20】にしたい場合は、
[B4]
=B3-WEEKDAY(B3)+WEEKDAY(B1)+IF(WEEKDAY(B3)<WEEKDAY(B1)+1,-7,0)
と、式の最後の方に「+1」を加えてください。
画像にある2行目の式で、後ろのほうの赤い字の部分です。
(画像がぼやけてますが、場所は確認できますよね?)

お試しください。

コメントいただいた内容を反映して修正しました。

[B1]に受診日を入力します。

[B2]に処方された薬の日数を入力します。

[B3]は薬がなくなる日を計算します。式は以下の通り
=B1+B2

[B4]は薬が無くなる前の火曜日に当たる日を計算します。
=B3-WEEKDAY(B3)+WEEKDAY(B1)+IF(WEEKDAY(B3)<WEEKDAY(B1),-7,0)

日付の右に曜日を表示しています。
[C1]
=B1
と式を入れ、
C1セルで、右クリック→ セルの書式設定 → 表示形式
右にあるユーザ書式のところに「aaa」と入力してok
これで曜日が表示されます。
C1セルを...続きを読む

QExcel 2段組み

縦長の表を2段組みとしたいのですが、下記の条件があります。
Excelで作成することは可能でしょうか。
可能でしたら方法を教えていただけないでしょうか。
よろしくお願いいたします。

①縦長の表を2段組みとしたい。
②表内で並び替えが可能としたい。
③2段組み内の1段の行を削除した場合に空きが出た1段部分に
2段部分のデータが自動で繰り上がるようにしたい。
(例えば2017年1月を削除した場合に2017年8月が自動で繰り上がるようにしたい。)



子供が小さいのでご連絡が遅くなる可能性がありますが、ご回答いただけた方には必ずお返事を致します。
よろしくお願いいたします。

Aベストアンサー

こんばんは!

① は画像のような配置ではなく、最初はA~F列だけにデータが羅列してある。
というコトですよね?
それをA~F列は7か月分だけにし、残りはG~L列に移動させたい!という解釈です。

② の「表内での並び替え」とはどの列がキーになるかが判りません。
これに関しては手作業で範囲指定 → 並び替え というコトが可能だと思いますので、今回はスルーします。

③ は仮にA~F列の1か月分(複数ヶ月でも)データを消去した場合にA~F列は上詰め、
G~L列は上詰めした月数分を繰り上げてA~F列に移動させる!という解釈です。

VBAになりますが一例です。
↓のSample① が「①」、Sample③ が「③」のコードになります。

Dim i As Long, cnt As Long
Dim lastRow1 As Long, lastRow2 As Long
Dim myRng1 As Range, myRng2 As Range
Sub Sample①()
If WorksheetFunction.CountIf(Range("A:A"), "小計") > 7 Then
Range("A1").Resize(, 6).Copy Range("G1")
lastRow1 = Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To lastRow1
If Cells(i, "A") = "小計" Then
cnt = cnt + 1
If cnt = 7 Then Exit For
End If
Next i
Range(Cells(i + 1, "A"), Cells(lastRow1, "F")).Cut Cells(Rows.Count, "G").End(xlUp).Offset(1)
lastRow1 = 0
cnt = 0
End If
End Sub

Sub Sample③()
If WorksheetFunction.CountIf(Range("A:A"), "小計") < 7 Then
lastRow1 = Cells(Rows.Count, "A").End(xlUp).Row
lastRow2 = Cells(Rows.Count, "G").End(xlUp).Row
For i = 2 To lastRow2
If Cells(i, "G") = "小計" Then
cnt = cnt + 1
If cnt = 7 - WorksheetFunction.CountIf(Range("A:A"), "小計") Then Exit For
End If
Next i
Range(Cells(2, "G"), Cells(i, "L")).Cut Cells(lastRow1 + 1, "A")
Set myRng1 = Range(Cells(2, "A"), Cells(lastRow1, "A")).SpecialCells(xlCellTypeBlanks)
Set myRng2 = Range(Cells(2, "G"), Cells(lastRow2, "G")).SpecialCells(xlCellTypeBlanks)
myRng1.Resize(, 6).Delete shift:=xlUp
myRng2.Resize(, 6).Delete shift:=xlUp
lastRow1 = 0
lastRow2 = 0
cnt = 0
End If
End Sub

※ 「小計」までが各月の最終行と見なしています。
すなわち「小計」の数で行数を決めています。m(_ _)m

こんばんは!

① は画像のような配置ではなく、最初はA~F列だけにデータが羅列してある。
というコトですよね?
それをA~F列は7か月分だけにし、残りはG~L列に移動させたい!という解釈です。

② の「表内での並び替え」とはどの列がキーになるかが判りません。
これに関しては手作業で範囲指定 → 並び替え というコトが可能だと思いますので、今回はスルーします。

③ は仮にA~F列の1か月分(複数ヶ月でも)データを消去した場合にA~F列は上詰め、
G~L列は上詰めした月数分を繰り上げてA~F列に移動...続きを読む

Qエクセル データ抽出の数式

お世話になります。
表①からリスト①に載っている人だけのデータを数式を使って抽出したいです。
(フィルタを使わないで、極力手作業にならない方法で)
表①は、スタッフ数百名分の全データとして、リスト①は、ある部署のスタッフとします。


表①
氏名 日付 ログイン ログオフ
田中 舞妓 2017/5/16 8:25 17:35
田中 舞妓 2017/5/17 8:18 17:35
田中 舞妓 2017/5/18 8:15 17:35
田中 舞妓 2017/5/19 8:29 17:34
田中 舞妓 2017/5/22 8:16 17:33
三田 建造 2017/5/23 8:18 17:39
三田 建造 2017/5/25 8:29 17:38
三田 建造 2017/5/26 8:02 17:31
三田 建造 2017/5/29 8:24 17:32
三田 建造 2017/5/30 8:22 17:33
牧 重三 2017/5/31 8:29 17:31
牧 重三 2017/6/1 8:17 17:35
牧 重三 2017/6/2 8:18 17:41
牧 重三 2017/6/5 8:19 17:31
牧 重三 2017/6/6 8:18 17:41
長岐 知美 2017/6/7 8:29 17:34
長岐 知美 2017/6/8 8:18 17:36
長岐 知美 2017/6/9 8:15 17:34
長岐 知美 2017/6/12 8:29 17:32
篠田 亜紀 2017/5/21 8:16 17:32
柿田 輝未 2017/5/28 8:18 17:17
荒元 耕平 2017/6/4 8:22 17:32
佐田 容子 2017/6/11 8:21 17:46
藤島 澄人 2017/6/12 8:24 17:59
藤島 澄人 2017/6/13 8:22 17:41
藤島 澄人 2017/6/14 8:29 17:28
藤島 澄人 2017/6/15 8:23 17:30
藤田明則 2017/5/16 8:29 17:34
藤田明則 2017/5/17 8:26 18:15
藤田明則 2017/5/31 15:30 0:36


リスト①
田中 舞妓
牧 重三
藤島 澄人
藤田明則

[完成]
氏名 日付 ログイン ログオフ
田中 舞妓 2017/5/16 8:25 17:35
田中 舞妓 2017/5/17 8:18 17:35
田中 舞妓 2017/5/18 8:15 17:35
田中 舞妓 2017/5/19 8:29 17:34
田中 舞妓 2017/5/22 8:16 17:33
牧 重三 2017/5/31 8:29 17:31
牧 重三 2017/6/1 8:17 17:35
牧 重三 2017/6/2 8:18 17:41
牧 重三 2017/6/5 8:19 17:31
牧 重三 2017/6/6 8:18 17:41
藤島 澄人 2017/6/12 8:24 17:59
藤島 澄人 2017/6/13 8:22 17:41
藤島 澄人 2017/6/14 8:29 17:28
藤島 澄人 2017/6/15 8:23 17:30
藤田明則 2017/5/16 8:29 17:34
藤田明則 2017/5/17 8:26 18:15
藤田明則 2017/5/31 15:30 0:36

お世話になります。
表①からリスト①に載っている人だけのデータを数式を使って抽出したいです。
(フィルタを使わないで、極力手作業にならない方法で)
表①は、スタッフ数百名分の全データとして、リスト①は、ある部署のスタッフとします。


表①
氏名 日付 ログイン ログオフ
田中 舞妓 2017/5/16 8:25 17:35
田中 舞妓 2017/5/17 8:18 17:35
田中 舞妓 2017/5/18 8:15 17:35
田中 舞妓 2017/5/19 8:29 17:34
田中 舞妓 2017/5/22 8:16 17:33
三田 建造 2017/5/23 8:18 17:39
三田 建造 20...続きを読む

Aベストアンサー

こんばんは!

VBAになりますが、一例です。
↓の画像のように元データはSheet1にあり、
Sheet2のA列2行目以降に「リスト」を入力 → C~F列に表示するとします。

標準モジュールにしてください。

Sub Sample1()
Dim i As Long, lastRow As Long, wS As Worksheet
Dim myStr As String, myAry As Variant
Set wS = Worksheets("Sheet2")
lastRow = wS.Cells(Rows.Count, "C").End(xlUp).Row
If lastRow > 1 Then
Range(wS.Cells(2, "C"), wS.Cells(lastRow, "F")).Clear
End If
For i = 2 To wS.Cells(Rows.Count, "A").End(xlUp).Row
myStr = myStr & wS.Cells(i, "A") & ","
Next i
myAry = Split(myStr, ",")
With Worksheets("Sheet1")
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
.Range("A1").AutoFilter field:=1, Criteria1:=Array(myAry), Operator:=xlFilterValues
If .Cells(Rows.Count, "A").End(xlUp).Row > 1 Then
Range(.Cells(2, "A"), .Cells(lastRow, "D")).SpecialCells(xlCellTypeVisible).Copy wS.Range("C2")
End If
.AutoFilterMode = False
End With
End Sub

こんな感じではどうでしょうか?m(_ _)m

こんばんは!

VBAになりますが、一例です。
↓の画像のように元データはSheet1にあり、
Sheet2のA列2行目以降に「リスト」を入力 → C~F列に表示するとします。

標準モジュールにしてください。

Sub Sample1()
Dim i As Long, lastRow As Long, wS As Worksheet
Dim myStr As String, myAry As Variant
Set wS = Worksheets("Sheet2")
lastRow = wS.Cells(Rows.Count, "C").End(xlUp).Row
If lastRow > 1 Then
Range(wS.Cells(2, "C"), wS.C...続きを読む


人気Q&Aランキング

おすすめ情報