エクセルで勤務表の出勤者を抜き出したい。

日付
名前 5/16 5/17 5/18 5/19
田中 出勤 休 出勤 休
鈴木 休 出勤 休 出勤
佐藤 出勤 出勤 出勤 休


と言う表があって別のシートに日付を入れると
出勤となっている人の名前を引っ張ってくる様にしたいのですがどうすれば出来ますか?
あまり詳しくないので細かく教えて下さい。

5/16 田中 佐藤

A 回答 (2件)

こんにちは!



↓の画像のように元データはSheet1にあり、Sheet2のB1セル以降1行目に表示するとします。
Sheet2のA1セルに日付を入力するとし、
Sheet2のB1セルに
=IFERROR(INDEX(Sheet1!$A1:$A100,SMALL(IF(OFFSET(Sheet1!$A1:$A100,,MATCH($A1,Sheet1!1:1,0)-1)="出勤",ROW($A1:$A100)),COLUMN(A1))),"")

配列数、Ctrl+Shift+Enterで確定! → B1セルのフィルハンドルで右へコピーすると
画像のような感じになります。m(_ _)m
「エクセルで勤務表の出勤者を抜き出したい。」の回答画像1
    • good
    • 0

HLOOKUP関数を使い日付に対して「出勤」となっているかを確かめ、「出勤」となっている行の名前を拾えば幸せになれるような気がします。



HLOOKUP関数の使い方を確認しましょう。
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています

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

Q<エクセル>2つのデータに間違いがないかをチェックしたい

エクセルで入力したデータが、ルールに基づいて正しく入力できているかどうかを確認するような関数はありますか?

例として(添付画像もつけさせていただきました)「粉薬」と「飲薬」を入力し、各容量を入力します。
「粉薬」と「××g」、「飲薬」と「××」は必ずセットで入力されていることが必須です。
もし誤って「粉薬」のときに「××」と入力をした場合に、間違った入力がされていることが表示されるような関数はありますでしょうか?
枠外に〇や×として表示される
セルに色がつく・・・等

色々検索をして試してみたのですがうまくいきません。
VBAなども出てきたのですが私自身知識が全くないことと、作成したデータをあまりエクセルが得意ではない人が使う可能性などを考え、できれば関数などでできれば・・・と考えています。

Aベストアンサー

=IF(NOT(ISERROR(FIND("粉薬",B2))),IF(NOT(ISERROR(FIND("g",C2))),"○","×"),"・")
b2に粉薬の文字がある場合で、かつ、(c2にgの文字がある場合には、○を表示、ない場合は×を表示)、左記以外は・を表示

QExcelを使って行列変換をしたい(大量件数)

先日質問させていただいたものです。
さらなる加工が必要になりました。

例えば、
◆test
aaaaaa
iiiiiiiiiiiii
uuuuu
eeeee
ooooo
◆test2
kaaaaa
kiiiiiiiiiii
kuuuuu
keeeee
kooooo
...

これらのデータを
◆test aaaaaa
    iiiiiiiiiiiiii
    uuuuuu
eeeeee
oooooo
◆test2 kaaaaa
     kiiiiiiiiiii
     kuuuu
     keeeee
     koooooo

に変換はできたのですが、今度は
◆test aaaaaaaa iiiiiiiiiii uuuuuuuuuuu eeeeeee oooooo
◆test2 kaaaaaa kiiiiiiiii kuuuuuuuuu keeeeee koooooooo

のように変換する必要がでてしまいました。

マクロなどで一括で変換できないでしょうか。
当方知識が乏しいため困っております。

先日質問させていただいたものです。
さらなる加工が必要になりました。

例えば、
◆test
aaaaaa
iiiiiiiiiiiii
uuuuu
eeeee
ooooo
◆test2
kaaaaa
kiiiiiiiiiii
kuuuuu
keeeee
kooooo
...

これらのデータを
◆test aaaaaa
    iiiiiiiiiiiiii
    uuuuuu
eeeeee
oooooo
◆test2 kaaaaa
     kiiiiiiiiiii
     kuuuu
     keeeee
     koooooo

に変換はできたのですが、今度は
◆test aaaaaaaa iiiiiiiiiii uuuuuuuuuuu eeeee...続きを読む

Aベストアンサー

こんにちは!

別シートに表示しても良いですか?
元データはSheet1のA列にあり、Sheet2に表示するとします。
標準モジュールにしてください。

Sub Sample1()
Dim i As Long, cnt As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
wS.Cells.ClearContents
With Worksheets("Sheet1")
For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row
If InStr(.Cells(i, "A"), "◆") > 0 Then
cnt = cnt + 1
wS.Cells(cnt, "A") = .Cells(i, "A")
Else
wS.Cells(cnt, Columns.Count).End(xlToLeft).Offset(, 1) = .Cells(i, "A")
End If
Next i
End With
End Sub

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

こんにちは!

別シートに表示しても良いですか?
元データはSheet1のA列にあり、Sheet2に表示するとします。
標準モジュールにしてください。

Sub Sample1()
Dim i As Long, cnt As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
wS.Cells.ClearContents
With Worksheets("Sheet1")
For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row
If InStr(.Cells(i, "A"), "◆") > 0 Then
cnt = cnt + 1
wS.Cells(...続きを読む

Qエクセルデータをカンマ区切り、ダブルコーテーションで囲んだデータにする方法を教えてください

はじめまして。
仕事でエクセルデータをカンマ区切り、ダブルコーテーション囲みのテキストデータにする必要があります。

例)
”111”,"222","","","","666""

このように空白のセルもあり、そのセルもダブルコーテーションで囲みたいです。
VBAで変更する方法をどこかで見かけましたが、張り付けてみましたが、上手く動きませんでした。
超初心者ですので、わかりやすく教えていただけると有り難いです。

お手数をおかけしますが、宜しくお願い致します。

Aベストアンサー

Unicode 出力の件ですが、せっかく、個人用マクロブックに納められる(つもり)ので、それを、書き換えるよりも、後づけマクロのほうがよいかもしれません。一緒にしてしまうと、Unicodeのみになってしまいますから、それも望まないし……
とあれこれ考えて、単独マクロで、Unicodeファイル判別するプログラムもつけました。BigEndien も LittleEndienも別けますが、出力は、BigEndienだけです。
こういうのは、余計なものかもしれません。

'//
Public Sub Convert2UNICODE()
'シフトJISをUnicodeに替えるマクロ
Dim stream As Object
Dim stream2 As Object
Dim fname As Variant
Dim buf As Variant
Dim b() As Byte
Dim i As Long
fname = Application.GetOpenFilename _
 ("File (*.*), *.*", 1, "ファイルオープン")
 If VarType(fname) = vbBoolean Then Exit Sub
 Open fname For Binary As #1
   ReDim b(1 To 6)
    Get #1, , b
  Close #1
 For i = 1 To 6
 buf = buf & Hex(b(i))
 Next
 If buf Like "FFFE*" Or buf Like "FEFF*" Then
  MsgBox "ファイルはすでにUnicodeです。", vbExclamation
  Exit Sub
 End If
 '-------変換プログラム-----------
On Error GoTo ErrHandler
Set stream = CreateObject("ADODB.Stream")
  stream.Open
  stream.Type = 2
  stream.Charset = "shift_jis"
  stream.LoadFromFile fname

Set stream2 = CreateObject("ADODB.Stream")
  stream2.Open
  stream2.Charset = "unicode"
  stream.CopyTo stream2
  stream2.SaveToFile (fname), 2
  stream2.Close
  stream.Close

Set stream2 = Nothing
Set stream = Nothing
Exit Sub
ErrHandler:
 If Err.Number <> 0 Then 
  Msgbox Err.Number & " :" & Err.Description
End If
End Sub

Unicode 出力の件ですが、せっかく、個人用マクロブックに納められる(つもり)ので、それを、書き換えるよりも、後づけマクロのほうがよいかもしれません。一緒にしてしまうと、Unicodeのみになってしまいますから、それも望まないし……
とあれこれ考えて、単独マクロで、Unicodeファイル判別するプログラムもつけました。BigEndien も LittleEndienも別けますが、出力は、BigEndienだけです。
こういうのは、余計なものかもしれません。

'//
Public Sub Convert2UNICODE()
'シフトJISをUnicodeに替えるマクロ
Di...続きを読む

Qエクセルで大きな写真の一部を切り抜く方法

教えて下さい。
エクセルで個人の写真を貼り付けを
為たいのですが
個人の写真は背景等が
多く写っていて
顔だけを大きく切り取り(拡大して)
(不要な背景等は削除)
四角に調節して貼り付けたいのです。

参考書を読んでもよく分からないので
教えて下さい。

Aベストアンサー

こんばんは!

トリミング、図の調整等々をすべてExcel上でやりたい!というコトでしょうか?
出来なくはないとおもいますが、PC内に入っている「ペイント」を使うのが簡単だと思います。

① プログラム → アクセサリー → 「ペイント」を立ち上げる
(白い部分「キャンバス」は極力小さくしておいた方が良いみたいです。)
② ファイル → 開く → 保存している画像を選択
③ メニュー → 「選択」の上の四角をクリック → 画像の必要部分をトリミング(ドラッグで範囲指定)
④ 選択した画像上で右クリック → コピー → ファイル → 新規 → 貼り付け

以上で必要部分の画像が表示されるはずですので、名前を付けて保存
後はExcelに画像を挿入する訳ですが、そのまま挿入するのではなく
⑤ メニュー → 挿入 → 図形(オートシェイプ)の「四角形」を好みの大きさに挿入
⑥ 図形の塗りつぶし → 図 → 先ほど保存した画像を選択 
(「枠線なし」などは好みによって変更します)

以上が当方が行っているやり方です。m(_ _)m

Qエクセル関数式の質問です。

D6列に"公、有、希、欠"が表示されたらE列、G列、H列、I列、M列、N列、O列、に数字の"0"を表示する。

何件か似た例が有るのですが応用が出来ません。

宜しくお願いします。

Aベストアンサー

またまた失礼、)消すの忘れました。

=If($D$6="公、有、希、欠",0,"")

Qoffice2016です。エクセルでA列と、セル1行を同時に固定するには

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

Aベストアンサー

>できませんでした

どのような状態になるのですか?
ウインドウの分割はしてませんか?

Qエクセル 関数について

エクセルの関数について質問です。

A1=出勤時間
B1=退勤時間
C1=休憩時間
D1=労働時間
E1=請求金額

で、
A2=18:00
A3=18:00
A4=18:00
B2=27:00
B3=23:00
B4=29:00
C2=1
C3=0
C4=1
D2=8
D3=5
D4=10
ここから本題です。
E2=¥13,000
E3=¥13,000
E4=¥15,000
になるように関数を教えてほしいです。

条件は
・D列が8時間以下の場合は¥13,000
・D列が8時間を超えた場合、残業1時間につき+¥1,000
D列が0時間の場合は¥0
です。

今試しでE2に入れている関数は
=MAX(SUM(COUNIF(D2,">=8"))*13000+SUM((D2-8)*1000),0)
です。
が、この関数だと
出勤18:00
退勤23:00
休憩0
の場合、労働時間が5時間になるわけですが、請求金額が0円で計算されてしまいます。

ここから知恵をお貸しください!
お願いします!

エクセルの関数について質問です。

A1=出勤時間
B1=退勤時間
C1=休憩時間
D1=労働時間
E1=請求金額

で、
A2=18:00
A3=18:00
A4=18:00
B2=27:00
B3=23:00
B4=29:00
C2=1
C3=0
C4=1
D2=8
D3=5
D4=10
ここから本題です。
E2=¥13,000
E3=¥13,000
E4=¥15,000
になるように関数を教えてほしいです。

条件は
・D列が8時間以下の場合は¥13,000
・D列が8時間を超えた場合、残業1時間につき+¥1,000
D列が0時間の場合は¥0
です。

今試しでE2に入れている関数は
=MAX(SUM(COUNIF(D2,">=...続きを読む

Aベストアンサー

E2: =IF(D2,13000+1000*MAX(D2-8,0),0)

Qエクセルの足し算について質問です。

エクセル2003を使っています。
A1~A10までの数字の合計を、B10に一発で表示させるのはどうしたらいいでしょうか?
オートSUMでは、合計はA11にしか表示されないのでしょうか?

Aベストアンサー

こんにちは!

Excelのバージョンに関係なくやり方は一緒だと思います。

B10セルを選択 → オートサムのアイコン(Σ)をクリック → A1~A10セルを範囲指定(ドラッグ)

これで大丈夫では?m(_ _)m

Qエクセルの計算式

エクセルが次のようになっています。

A列  B列  C列  D列  E列 F列  G列
1000     伺1712345    計算式


A列に1000、D列に伺1712345 と記載されており

G列には次の式が入っており、E1D72345と表示されます。

=IF(D11="","",IF(A11="","",IF(A11="2950","I",IF(A11>"2999","F",IF(A11>"1999","D","E")))&IF(E11="0","2","1")&
IF(LEFT(D11,1)="伺",IF(A11>"3044","K",IF(A11>"2999","I",IF(A11>"1999","G",IF(LEFT(D11,3)="伺ek","E","D")))),
IF(A11>"3044","J",IF(A11>"2949","H",IF(A11>"1999","F",IF(LEFT(D11,2)="ek","C","B")))))&IF(AND(LEFT(D11,1)
="伺",A11<"3000"),LEFT(RIGHT(D11,6),1)&RIGHT(D11,4),RIGHT(D11,5))))

この式をD列の下5桁が埋まっている場合はE1D72345をE1Z72345(DをZに変える)にしたいのですが式をどのように変更すればよいでしょうか。

要は以下のようにしたいのです。

D列が伺1702345の場合はG列はE1D71345となる(現状の式でOK)

D列が伺1712345の場合はG列はE1Z71345となる(現状の式を変更しなければならない)


宜しくお願いします。

エクセルが次のようになっています。

A列  B列  C列  D列  E列 F列  G列
1000     伺1712345    計算式


A列に1000、D列に伺1712345 と記載されており

G列には次の式が入っており、E1D72345と表示されます。

=IF(D11="","",IF(A11="","",IF(A11="2950","I",IF(A11>"2999","F",IF(A11>"1999","D","E")))&IF(E11="0","2","1")&
IF(LEFT(D11,1)="伺",IF(A11>"3044","K",IF(A11>"2999","I",IF(A11>"1999","G",IF(LEFT(D11,3)="伺ek","E","D")))),
IF(A11>...続きを読む

Aベストアンサー

長さの問題ではないですね。
IF(IF(IF(IF(…という形で、関数の中に関数の中に関数…というのが、限界の数になったようです。
(中に入れる形を取らなければ、長さはもっと長くなっても問題ないです)
であるならば、中身を分解して書き直さないといけませんね。

今回IF(LEFT(RIGHT(D11,5),1)="0","D","Z")を増やしたので、最高でも3つ減らせれば問題なく動くかと。
一番手っ取り早いのは、隣のセルにでも
=IF(LEFT(RIGHT(D11,5),1)="0","D","Z")
と入力し、これを加えた部分(元の"D"の部分)にそのセルのセル番地(A1など)を入力することですね。
条件に該当する場合のみ、そのセルに表示されたデータ("D"or"Z")を参照し、条件に該当しない場合はそのセルに何が表示されていても関係ない。ことになります。

Qエクセルでデータをまとめて合計を出す方法を教えて下さい

エクセルでA列に得意先、B列に金額、C列に○or×を入力しています。
得意先は部署ごとにわかれていますが、それを会社単位にして
C列に○が付いていたらB列の金額を合算できるようにしたいです。

わかりにくいかと思いますが、教えて頂きたいです。
よろしくお願いします。

Aベストアンサー

「得意先名」と「〇/×」で合計の判断をするので、
SUMIF関数ではなく
SUMIFS関数ですね。

Excel2007から追加された関数ですので、Excel2003以前のバージョンではSUMPRODUCT関数を使うことになります。

SUMIFS関数は
 =SUMIFS(合計対象範囲 , 検索条件範囲1,検索条件1 , 検索条件範囲2,検索条件2...)
のように複数の検索条件を設定することができ、このすべての条件を満たした場合の合計を求められます。
 =SUMIFS(B:B , A:A,”得意先A” , C:C,”〇”)
こんな感じ。

SUMPRODUCT関数は、
 商品名 単価 個数
  A   100 20
  B   120 10
  C   150 55
の合計を求める関数ですが、
これの「個数」にあたる部分を「1」か「0」にすることで「単価」の合計(が意味あるのかどうかは別として)を求めることができます。
質問の例では
 得意先 金額 マーク
 ACB社 100  〇
 DEF社 120  ×
 GHI社 150  〇
こんなでしょう。
 =SUMPRODUCT( 配列1 , 配列2 , 配列3...)
として配列にはこの場合は縦方向を指定することになります。
前の例では
 =SUMPRODUCT( B:B , C:C )
この結果
 B2×C2 + B3×C3 + B4×C3
の計算が行われます。
 配列1 × 配列2...
その合計が求められると思えばいいです。
で、後者は
 =SUMPRODUCT( (A:A="ABC社")*1 , B:B , (C:C=”〇”)*1 )
または
 =SUMPRODUCT( A:A="ABC社") * B:B * (C:C=”〇”) )
こうなります。
 A:A=”ABC社”
で、A列の値が”ABC社”なら”TRUE”が、違えば”FALSE”が返るので、
これを四則演算させて”TRUE"を「1」、”FALSE"を「0」にして集計させます。

「得意先名」と「〇/×」で合計の判断をするので、
SUMIF関数ではなく
SUMIFS関数ですね。

Excel2007から追加された関数ですので、Excel2003以前のバージョンではSUMPRODUCT関数を使うことになります。

SUMIFS関数は
 =SUMIFS(合計対象範囲 , 検索条件範囲1,検索条件1 , 検索条件範囲2,検索条件2...)
のように複数の検索条件を設定することができ、このすべての条件を満たした場合の合計を求められます。
 =SUMIFS(B:B , A:A,”得意先A” , C:C,”〇”)
こんな感じ。

SUMPRODUCT関数は、
 商品名 単...続きを読む


人気Q&Aランキング