• ベストアンサー

2つのセルの内、どちらかg日数の計算

カレンダーで表を作成。 1行のセルには 1(A3)1(B3)2(c3)2(d3)3(E3)3(f3)と順に入力)。 その行下に AM(A5)PM(B6)AM(c7)PM(D8)AM(E9)PM(F10)を入力しています。 AM、PM、両方勤務の場合があり、2(時間)または3(時間)が入力されます。 AMPM両方勤務も1日カウント、AMまたはPMのどちらかでも、1日カウントできるようにしたい。 1行増やすことで作成はしております。 IF(AND(A6="",B6=""),"","○") A7 B7は結合して"○"を入力しています。 COUNTIF(C7:J7,"○") 1行増やさないでカウントする方法は可能でしょうか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

まずそのような関数はないと思いますので、関数を組み合わせるしかありません。 質問にあるCOUNTIFの範囲がC7:J7となっていますが、A7:J7の間違いでしょうか? A7:J7であれば、ひとつの枠の日数は5日分と判断しました。 また、入力値が2または3という点が今後変わらなければ次の関数でいけると思います。 =LEN(SUBSTITUTE(A6+B6 & C6+D6 & E6+F6 & G6+H6 & I6+J6,"0","")) それぞれのペアになっているAMとPMは普通に加算し、それらを文字列で結合します。すると5文字の数字だけでできた文字列が得られます。 (入力値は2か3なので、合計が二桁になることはありません。よって確実に5文字です。) セルが未入力の場合は0として加算されるので、AM/PM両方が未入力の場合の合計は0となり、文字列も"0"になります。 5文字の文字列から"0"を除外し、残った文字列の長さが、出勤日数となります。 数字以外の文字を入力したり、合計が二桁になるような場合はうまく動かなくなりますが、一応目的のものができたので回答を挙げておきます。 日数の違い等は適宜修正してください。

gorugo48
質問者

お礼

Wizard_Zero様 お返事遅くなりました。 早速のご回答ありがとうございます。 質問がいわれるように間違っておりました。 AM(A5)PM(B5)AM(c5)PM(D5)AM(E5)PM(F5) C7:J7となっていますが、A7:J7の間違いです。 申し訳ありませんでした。 回答の件ですが、文字列結合(&)はなるほど! 理想の表が出来そうです。 ありがとうございました。

その他の回答 (4)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.5

No.2です。 関数を組み合わせて強引に答えを出すよりも、作業セルを使用して簡単な関数で答えを出した方が間違いがなく、判り易いので後々のメンテナンス性も上がって便利な場合が多々あります。 今回はまさにそのパターンの様に思えます。 現在、作業行を使って実現できているのですからそのままが良いでしょう。 見た目がいやなら、作業行を非表示にすれば良いだけですから。 また、画像はプリントスクリーンした物をペイントで切り取ってJpegで保存した物です。 ↓をご参照ください http://vcl.vaio.sony.co.jp/glossary/links/S0409250018060/internet-jp.html

gorugo48
質問者

お礼

ご回答ありがとうございます。 行が多くなりますが、判り易いほうがいいですね。 いろいろまた、考えてみます。 ありがとうございました。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

No.2です。 画像の状態とは違うみたいですね。 できれば画像でもいいので実例が欲しいです。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

現在、画像の様な状態で、7行目を作りたくない……と理解しました。合っていますか? 作業行を使いたくない理由が良く判りません。 7行目を非表示にして隠すだけでは駄目なのですか?

gorugo48
質問者

補足

早速の回答ありがとうございます。 添付されました画像のとおりです。 1列に勤務者名があり、30名いますので、各1名で1行増えますと、行が多くなり、少ない行で作成を考えています。 ※このように質問欄にエクセル表を添付する方法もお教えください。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

>1(A3)1(B3)2(c3)2(d3)3(E3)3(f3)と順に入力)。 は日付の日の部分か A5には同じ区日付が入るのか。 実例をもう少し詳しく書くこと。 下記のような例はかけないのか。 1 1 2 2 3 3 4 4 AM PM AM PM AM PM AM PM 2 ー 2 3 ー ー ー 3 ー 2 ー 3 ー 2 2 3 ーは空白セルを示す。 ーー 関数ではとりあえず複雑そうなのでVBAでユーザー関数を作って見た・ VBE画面の標準モジュールに Function ns(a) i = a.Row 'MsgBox i r = Range("IV3").End(xlToLeft).Column 'MsgBox r k = 0 For j = 1 To r Step 2 If Cells(i, j) <> "" Or Cells(i, j + 1) <> "" Then k = k + 1 End If Next j ns = k End Function を入れる。 シートで第5行の空き列に =ns(A5) と入れて下方向に式複写。 私が例に示した2人分で 結果 第5行 3 第6行 4

関連するQ&A

専門家に質問してみよう