• ベストアンサー

エクセルで日付→曜日を返すには

エクセルでエクセルで日付 (例 2004/8/1といった形式での入力)→ 曜日を返すには なにか関数がありますか? 飛び飛びの日付が隣り合ったセルに入力されているの ですが その間の日付をセルに返して 本来の位置に移動することは可能でしょうか? 自分で考えてみたのですが とっかかりさえつかめません、 皆様よろしくお願いします。

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

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

#10です。 >シート2での作業を自動化したいのですが、 >シート1の日付範囲が毎回違うので >そこを踏まえて日付セルのコピーって出来るのでしょうか? >シート1の日付がきれいに連続していたら >Activecell Row などを使いデータ最終行まで >コピーは出来るのですが >不連続の日付であるシート1に対して >シート2は連続って厳しいでしょうか? すいません、文章が難しくてよくわからなかったのですが、元データのシート1を参照して、シート2の日付の開始日を決定したいと言う事でしょうか? シート1の「A1」に”6/2”があるとして、シート2の日付を6/1~6/30にしたいのなら、シート2に次の式で可能です。 「A1」 =IF(シート1!A1="", "", DATE(YEAR(シート1!A1), MONTH(シート1!A1),1)) 「A2」 =IF(A1="", "", IF(MONTH(A1)=MONTH(A1+1), A1+1, "" )) 「A3」以降 「A2」をコピー 又は、 シート1の「A」の最小日付~最大日付の範囲を、シート2の日付にしたいのなら、シート2に次の式で可能です。 「A1」 =IF(シート1!A1="","",MIN(シート1!A:A)) 「A2」 =IF(A1="", "", IF(MAX(シート1!A:A)>=A1+1, A1+1, "" )) 「A3」以降 「A2」をコピー

その他の回答 (11)

回答No.12

>シート1は別のテキストからインポートしてくる関係上 >最初は白紙なのです。 >それに対して最初からシート2に教えていただいた関数を >設定すると当然シート1の白紙データを参照するので >エラーがでるもので。 確認してみたのですが、空白でもエラーは表示されませんでした。 (EXCELのバージョンによって違うのかもしれませんが...) 具体的には、どのようなエラーが表示されますでしょうか? もし、#REF! が表示されているとすると、参照先の設定エラーです。

ennkai
質問者

お礼

ありがとうございました 関数に関してはばっちりでした、感謝です。 エラーは、#REF!でしたが この点はまた自分でも検討したいとおもいます。 ありがとうございました

回答No.10

#4です。 >A 日付 >B 来客数 が縦にずっと入力されています >日付が入力されていない日は来客数が >ゼロと言う意味です > >この表をA 日付 B 曜日 C来客数 >と云う風に変更したいのです (1) 別シートを新規作成して、 A列に、#4の方法で、7/1~7/31の様に日付を順に作成します(A1に7/1が入っているとします)。 (2) B1に =A1 と入力して、B2以下にコピーします(この時点では、A列と同じ値が表示されています)。 (3) B列のセル書式を#4の方法で曜日表示に変更します。 (4) C1に =IF(ISNA(VLOOKUP(A1,Sheet1!A:B,2,FALSE)), 0, VLOOKUP(A1,Sheet1!A:B,2,FALSE)) と入力します。 ”Sheet1”は元々データの入っているシート名を指定してください。 (5) C1をC2以下にコピーします。 以上で多分できると思います。 日付の存在しないデータを0でなく空白で表示したいときは、IF関数の真ん中の値を、""に変更してください。 =IF(ISNA(VLOOKUP(A1,Sheet1!A:B,2,FALSE)), "", VLOOKUP(A1,Sheet1!A:B,2,FALSE))

ennkai
質問者

補足

うまくいきました、 そのものずばりの方法でした! ありがとうございます。 シート2での作業を自動化したいのですが、 シート1の日付範囲が毎回違うので そこを踏まえて日付セルのコピーって出来るのでしょうか? シート1の日付がきれいに連続していたら Activecell Row などを使いデータ最終行まで コピーは出来るのですが 不連続の日付であるシート1に対して シート2は連続って厳しいでしょうか? シート1は別のテキストからインポートしてくる関係上 最初は白紙なのです。 それに対して最初からシート2に教えていただいた関数を 設定すると当然シート1の白紙データを参照するので エラーがでるもので。

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

(書式による)同一セルで ユーザー定義。yyyy/mm/dd(aaa) やyyyy/m/d aaa など。 (関数による)別列(セル)になる TEXT関数 =TEXT(A1,"aaa") (関数による)別列(セル)になる WEEKDAY関数とCHOOSE関数の組み合わせ =CHOOSE(WEEKDAY(A1),"日","月","火","水","木","金","土") (後半)質問の趣旨を外していたらごめんなさい。 2004/8/1は値は38200です。 これを第1行に表示するとして 2004/8/5は値は38204ですから、38204-38200+1=5行目に表示すれば良い。 2004/8/5-2004/8/1+1は5です。 従って (例データ) A1:B5 (A列) (B列) (C列) 2004/8/2 会議 2 2004/8/8 出張 8 2004/8/1 面談 1 2004/8/4 締め 4 2004/8/6 休み 6 C1に=A1-"2004/8/1"+1をいれてC5まで複写。 結果は上記の通り。 E1に =OFFSET($A$1,MATCH(ROW(),$C$1:$C$5,0)-1,0) E8まで複写。 F1に =OFFSET($A$1,MATCH(ROW(),$C$1:$C$5,0)-1,1) F8まで複写。 (結果) 2004/8/1 面談 2004/8/2 会議 #N/A #N/A 2004/8/4 締め #N/A #N/A 2004/8/6 休み #N/A #N/A 2004/8/8 出張 #N/Aを出ないようにはISERRORを使えば出きるが ここでは略。

ennkai
質問者

お礼

お礼が遅くなって申し訳ありません No10様の方法でうまくいきました ありがとうございました 御尽力感謝です。

回答No.8

#4です。 >A1 1/1 A2 1/2 A3 1/4 A4 1/6 >これから >A1 1/1 A2 1/2 A3 1/3 A4 1/4  >A5 1/5 A6 1/6 >となればと思っております。 A1からA6までドラッグしてオートフィルで入力するか、 A2に、A1+1 と入力して、A2をA3~A6コピーすれば、A列を修正することは可能です。 もしかするとB列から右にもデータは入っていますでしょうか? その場合、A列とそれ以外の列のデータの整合性を取るためには、必要数分の行を追加する必要があります。

ennkai
質問者

お礼

お礼が遅くなって申し訳ありません No10様の方法でうまくいきました ありがとうございました 御尽力感謝です。

回答No.7

その表がどう言う目的のものなのかをご説明頂けるとわかりやすくなるような気がしますが・・・

ennkai
質問者

お礼

お礼が遅くなって申し訳ありません No10様の方法でうまくいきました ありがとうございました 御尽力感謝です。

ennkai
質問者

補足

補足いたします A 日付 B 来客数 が縦にずっと入力されています 日付が入力されていない日は来客数が ゼロと言う意味です この表をA 日付 B 曜日 C来客数 と云う風に変更したいのです 最終的には月ごとにまとめて たとえば7/1と8/1を横に並べて見ることが 出来れば・・・と考えております。 ABC DEF GHI・・・で7月 8月 9月と言うう夕に マクロで組むことを考えているのですが まだまだ初心者名者でお手数かけて もうしわけないです  

回答No.6

例えばA1に「2004/8/10」が入ってるとして、 A2に曜日を表示させるならばA2に =TEXT(A1,"aaa") と入力すれば、この場合 ”火” と表示されます。 #3さんの記述にもあるように、"aaa"の部分を変更すればいろいろな形式を表示できます。

ennkai
質問者

お礼

お礼が遅くなって申し訳ありません No10様の方法でうまくいきました ありがとうございました 御尽力感謝です。

回答No.5

 ひねくれ者ですが、こんなやり方も… セルB5に日付変数が入っているとします。 そして、セルB6に、 =IF(WEEKDAY(B5)=1,"日",IF(WEEKDAY(B5)=2,"月",IF(WEEKDAY(B5)=3,"火",IF(WEEKDAY(B5)=4,"水",IF(WEEKDAY(B5)=5,"木",IF(WEEKDAY(B5)=6,"金","土")))))) と関数を入れても出てきますよ。  あと、下段の「飛び飛びの…」は、ちょっと言っている意味がわかりませんでした。

ennkai
質問者

お礼

お礼が遅くなって申し訳ありません No10様の方法でうまくいきました ありがとうございました 御尽力感謝です。

回答No.4

曜日はWEEKDAY関数で取得できます(数値)。 ”土”,”日”のように表示するのであれば、セルの書式設定で、”aa”または”aaa”で表示できます。 飛び飛びの・・・ の箇所は「本来の位置」がどういう状態をさしているのかわかりませんでした。

ennkai
質問者

お礼

お礼が遅くなって申し訳ありません No10様の方法でうまくいきました ありがとうございました 御尽力感謝です。

ennkai
質問者

補足

補足をさせていだただきます A1 1/1 A2 1/2 A3 1/4 A4 1/6 これから A1 1/1 A2 1/2 A3 1/3 A4 1/4  A5 1/5 A6 1/6 となればと思っております。 分かりにくい説明で御迷惑おかけして 申し訳ないです 

  • TORYS
  • ベストアンサー率50% (39/78)
回答No.3

☆日付から曜日を取得する関数(参考URL)より 1.曜日を表示するセルから、日付が入力されているセルを参照  (=A2)、または曜日を表示するセルに日付を入力 2.曜日を表示するセルの、表示形式を設定  "aaa"           ’土 . "aaaa"         ’土曜日 . "ddd"          ’Sat . "dddd"         ’Saturday 3.曜日の戻り値(数値)を取得する場合    WEEKDAY(シリアル値, 種類)      =WEEKDAY(A1,1)

参考URL:
http://member.nifty.ne.jp/bear/extec/extec22.htm
ennkai
質問者

お礼

お礼が遅くなって申し訳ありません No10様の方法でうまくいきました ありがとうございました 御尽力感謝です。

  • komkoma
  • ベストアンサー率33% (7/21)
回答No.2

WEEKDAY関数を使えば、曜日に対応する数値を得ることが出来ますが、日付の入っているセルで「セルの書式設定」>「表示形式」>「ユーザ定義」で、書式を入力する欄にaaaと入力すると曜日が出ますよ。

ennkai
質問者

お礼

お礼が遅くなって申し訳ありません No10様の方法でうまくいきました ありがとうございました 御尽力感謝です。