- ベストアンサー
エクセルのmatch関数?
下記の様な表を作りました 1 2 3 4 5 6 7 ・・・・ 月 火 水 木 金 土 日・・・・ イトウ 出勤 出勤 欠勤 出勤 欠勤 出勤 出勤 サトウ 欠勤 出勤 欠勤 出勤 出勤 欠勤 出勤 カトウ 出勤 欠勤 出勤 出勤 出勤 出勤 欠勤 この表の中から、「イトウ」が欠勤したのは何日かを表示させたいです イトウ 欠勤日 3 5 の様に別のセルに日にちだけでも表示したいのです 複数ある場合も全部日にちを表示させたいのです。 表示は縦でも横でもどちらでもいいのですが、何日に欠勤したかを 出勤簿に入力しただけで、自動に表示させたいです よろしくお願い致します。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
◆イトウさんの欠勤日 =IF(COLUMN(A1)>COUNTIF($B3:$AF3,"欠勤"),"",INDEX($A$1:$AF$1,SMALL(INDEX(SUBSTITUTE(($B3:$AF3="欠勤")*1,0,10^5)*COLUMN($B$1:$AF$1),),COLUMN(A1)))) ★この式を下にコピーすると、「サトウ」、「カトウ」さんの欠勤日が表示されます
その他の回答 (6)
- n-jun
- ベストアンサー率33% (959/2873)
ANo.6です。 >やはりVBA等でないと無理でしょうか。 数式でも出来ると思いますよ。(私は苦手ですけど) ただし最大31日間休むことも考えなければなりませんから、31日分のセルに対して、 事前に数式を入れておく必要はありますね。
お礼
ありがとう御座いました。
- n-jun
- ベストアンサー率33% (959/2873)
ANo.5です。 >実際のデータは最初の質問の様な感じなんですけど、 表の感じは確かにわかります。 けどANo.3さんの補足にもありますが、 >実際の表に合わせて行番号、範囲などを変えたつもりなのですが。 合わせたけど出来なかったわけですよね。 と言う事は回答する側にしてみると、 どこの範囲にデータがあってどこに結果を出そうとしてダメだったのか。 検証しようにもできないのです。 別方法でVBAでゴテゴテにコードを書くことで、希望の結果も出せるかも知れませんが、 データの位置と結果の表示位置がわからなければお手上げです。 (回答者側で検証出来た状態で提示しても、実際と合わなければエラーになりますし) 直接の回答でなくすいませんでした。
補足
解りにくくてすみません、実際の表の状態を書きます A1に(西暦) B1に(月) B3~AF3迄(日付1~31)固定になっています B4~AF4迄(曜日)B1に月を入力すると曜日が変わります B5~AF5迄(出勤・欠勤など)リストから選択しています A列の5~22迄名前が入っています。 この表の下に同じくA列に名前 B25に欠勤日とし、C25以降に欠勤した全ての日付を表示させたいです、やはりVBA等でないと無理でしょうか。
- n-jun
- ベストアンサー率33% (959/2873)
ANo.4です。 実際のデータがどのように配置され、どこに名前を打ち込んで結果を出したいのかがわからないので、 回答も憶測になってしまいます。 と言うか関数ご希望なら私は苦手ですので無理かも。
補足
実際のデータは最初の質問の様な感じなんですけど、例えばデータ元となる表の下にでも欠勤日表みたいな感じで、誰がその月の何日に欠勤したかを表示させたいです。 名前は最初から打ち込んでいて、その脇でも下でもいいのですが 欠勤した日付を表示できるようにと考えています。 解りにくくて申し訳ありません。
- n-jun
- ベストアンサー率33% (959/2873)
>出勤簿に入力しただけで、自動に表示させたいです と言うのが、1つのセルに「イトウ」と入力した時・「サトウ」「カトウ」と入力した時、 同一の行に欠勤した日を列挙したいと言う事なのかな。
お礼
作る事が出来ました ありがとう御座いました。
補足
例えば イトウ 欠勤 3 5 サトウ 欠勤 1 3 6 カトウ 欠勤 2 7 の様な感じにしたいのですが・・・ 表の中から各自の欠勤日の日にちを抜いてきて自動に表示したいんです よろしくお願いします。
- chie65536
- ベストアンサー率41% (2512/6032)
日付がB1セルからAF1セルまで横に、出勤か欠勤かがB3セルからAF1セルまで横に入っている場合 =IF(B3="欠勤",B1 & " ","") & IF(C3="欠勤",C1 & " ","") & IF(D3="欠勤",D1 & " ","") & IF(E3="欠勤",E1 & " ","") & …(中略)… & IF(AE3="欠勤",AE1 & " ","") & IF(AF3="欠勤",AF1 & " ","") と言う式を書けばOKでしょう。 31個のIF関数を書くのは手間ですけどね。
補足
回答ありがとうございます 日付の表示が、例えば13510ではなく 1 3 5 10の様に つながらないで表示は可能でしょうか? もう1つですが、実際の表の日付部分の表示がユーザー定義のbで 表示していて、それを標準に戻すと3562の様に表示されます 今回教えて頂いた方法だと、ユーザー定義bを選んでも3562の表示 から変わらないものですから、良ければこちらもお願いします。
- kokorone
- ベストアンサー率38% (417/1093)
自動ではなく、少し「力技」です。 まず、行と列を入れ換えたシートを作成します。 (行と列の入れ換え方法) http://shikaku.biglobe.ne.jp/pc_technic/excel/03_1.html 次に各列に、オートフィルタを設定します。 「イトウ」さんの列のフィルタ条件から、”欠勤”を選択すれば、 欠勤したデータのみの表示になります。 いかがでしょうか?
お礼
たびたびすみません、今一部分の行番号を変更したら「欠勤」部分の 日付が表示出来るようのなったのですが、最初の欠勤日だけで2回目、3回目の日付が表示出来ません、例えば一ヶ月に5日欠勤したとしたら、全ての日にちを表示すろ事は出来るのでしょうか? 表示するのは1つのセルにでも複数にでも構いません。 よろしくお願い致します。
補足
回答ありがとうございました 試してみたのですがなかなかうまくいきません・・・ 関数の事はよく解らないので数式をコピーして、実際の表に 合わせて行番号、範囲などを変えたつもりなのですが。 エラーにならずに数字は出るのですが実際その部分は空白のセルで欠勤と入っていないのです。 数式の中の (COLUMN(A1)>の(A1)と ")*1,0,10^5)*の部分は何を指すのでしょうか? よろしくお願いします