• ベストアンサー

縦2行のデータを横14行で表示させるには…

excel2003での質問です。 A列に4月1日(日)~3月31日(日)(曜日は仮)までの日付が、 B列にはそれぞれの日の行事が入力されています。 これを、別シートに 日付と行事をセットにして、 横に月曜日から日曜日まで並べ替えて表示するのはどうしたらよいのでしょうか。 こんな感じです   A列    B列 1 4/1(月) 行事1 2 4/2(火) 行事2 3 4/3(水) 行事3 4 4/4(木) 行事4 5 4/5(金) 行事5 6 4/6(土) 行事6 7 4/7(日) 行事7 8 4/8(月) 行事8 9 4/9(火) 行事9    ↓   A列   B列   C列   D列   … M列   N列 1 4/1(月) 行事1  4/2(火) 行事2  … 4/7(日) 行事7 2 4/8(月) 行事8  4/9(火) 行事9  … 縦1行だけなら以前madeline_kngさんが質問(質問番号:1955100)されたのでそれを参考にすればわかるのですが… よろしくお願いします。  

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

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

複雑な式を使いたくない場合は以下のようにします。 データシートを「Sheet1」とします。 (1)別シートのA1に「#Sheet1!A1」、B1に「#Sheet1!B1」とし、A1:B1を選択してN列までオートフィルします。 (2)別シートのA2に「#Sheet1!A8」、B2に「#Sheet1!B8」とし、A2:B2を選択してN列までオートフィルします。 (3)別シートのA1:N2を選択して必要な行までオートフィルします。 (4)置換機能を使って「#」を「=」に置換します。 以上です。

r-inarin
質問者

お礼

早々にご回答いただきありがとうございます。 「目から鱗が落ちる」そんな感じです! なるほどね! ありがとうございます。 こちらの方法だと、日付の表示形式が変わりませんでした。

その他の回答 (7)

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.8

図添付の都合で別シートにしていませんが、適当に直してください。 D3:=INDIRECT("A"&(ROW($A$3)+(ROW()-ROW($A$3))*7+(COLUMN()-COLUMN($D$3))/2)-2) E3:=INDIRECT("B"&(ROW($B$3)+(ROW()-ROW($B$3))*7+(COLUMN()-COLUMN($E$3))/2)-2) として、D3:E3を選択して右に7ステップ分フィル、更に下に適当にフィルして下さい。式の最後の「-2」は「月」に合わせるためです。

r-inarin
質問者

お礼

図まで添付していただきありがとうございます。 できました。 いろいろな方法(式)があるのですね。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.7

回答No5です。 大変失礼をいたしました。大切な式の提示が抜けておりました。申し訳ありません。 式のみを以下にまとめます。 Sheet1のC1セルには次の式を入力します。 =IF(A1="","",WEEKDAY(A1,2)) D1セルには次の式を入力します。 =IF(A1="","",C1&"/"&IF(C$1=1,COUNTIF(C$1:C1,1),COUNTIF(C$1:C1,1)+1)) Sheet2のA1セルには次の式を入力しN1セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(COUNTIF(Sheet1!$D:$D,ROUNDUP(COLUMN(A1)/2,0)&"/"&ROW(A1))=0,"",INDEX(Sheet1!$A:$B,MATCH(ROUNDUP(COLUMN(A1)/2,0)&"/"&ROW(A1),Sheet1!$D:$D,0),IF(MOD(COLUMN(A1),2)=0,2,1)))

r-inarin
質問者

お礼

再度ご回答いただきありがとうごます。 できました!! 表示された結果はまったく望んだ通りというか…充分過ぎます。 ここまで出来るなんて思ってもいなかったので驚きです。 関数だけでもここまでできるんですね。 本当に驚きです。 唯一問題と言えば… 私の力ではまったく式の意味が理解できないことです。 私にはレベルが高過ぎて…。 でも、ありがとうございました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.6

回答No5です。 Sheet1でのB1の入力の式は以下のように変更してください。 =IF(A1="","",C1&"/"&IF(C$1=1,COUNTIF(C$1:C1,1),COUNTIF(C$1:C1,1)+1))

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.5

月初めが月曜とは限りませんね。 データがSheet1にあるとしてA1セルから下方には4/1(月)のようになっているとします。 念のため今年の4月1日は水曜日ですが。 これらのデータが正しく表示されるようにするためには、今年の場合でしたら4/1のようにセルに入力します。すると数式バー上では2009/4/1のように表示されます。そこで4/1(水)のように表示させるためにはA列を選択して右クリックし、「セルの書式設定」の「表示形式」から「ユーザー定義」を選択し、m/d(aaa)と入力すればよいですね。 B列には行事が入っています。 ところで、望みの表を得るためには作業列を作って対応します。 B1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A1="","",WEEKDAY(A1,2)) また、C1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A1="","",C1&"/"&IF(AND(COUNTIF(C$1:C1,1)=1,ROW(A1)=1),1,COUNTIF(C$1:C1,1)+1)) お求めの表ですがSheet2に作ることにしてSheet2 のA1セルには次の式を入力してN1セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 A列、C列、E列・・・と日につが表示される列についてはそれらの列をCtrlキーを押しながら選択した後で「セルの書式設定」から、最初に述べたと同様にして「ユーザー定義」ではm/d(aaa)と設定することで最終的な表が出来上がります。

r-inarin
質問者

補足

ご回答ありがとうございます。 日付の表示の仕方までていねいにご説明いただきありがとうございます。 作業列のことで質問させてください。 B列には行事が入力されています。そのB列に式を入力すると行事が消えてしまうのですが?別シートでしょうか? また、「Sheet2 のA1セルには次の式を入力して…」と書かれているのでが、その式とは?

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

エクセル関数の数式は、値を受けるセルに入れるのはわかりますね。 Sheet2側です。その情報としては自分の(=式を入れる)行番号、列番号しか利用する材料は在りません。ですからこの行と列x、yから、Sheet1の見に行く行と列を探さねばなりません(z=f(x、y)でfがどんな式になるか、のイメージです。) 日付列は A1はx、yは(1,1)ですがSheet1の1行目(1,1) C1はx、yは(1,3)ですがSheet1の2行目(2,1) D1はx、yは(1,5)ですがSheet1の3行目(3,1) ・・ 視察により行の割り出しは 3=INT(D1/2)+1のようです。 次のSheet2の行のことも考えて、試行錯誤して、最終に行き着く結果は =INDEX(Sheet1!$A$1:$B$100,INT((ROW()-1)*7+1+COLUMN()/2),1) ーーー 行事の列は Sheet2の A1は =INDEX(Sheet1!$A$1:$B$100,INT((ROW()-1)*7+1+COLUMN()/2),2) C1、E1,G1,I1,K1,K1をCTRLを押しながらクリックする。 そしてCTRL+Vで貼り付け。 普通のように右にフィルハンドルを引っ張る方法は通用しない。 ーー 行事列は B1は =INDEX(Sheet1!$A$1:$B$100,INT((COLUMN()-1)/2)+1,(ROW()+1)) これをコピーし、日付の場合と同じく、B1,D1、F1、H1、J1、L1、M1を 、CTRLキーを押しつつクリックして、B1の式を貼り付ける。 結果 4/1(月) 行事1 4/2(火) 行事2 4/3(水) 行事3 4/4(木) 行事4 4/5(金) 行事5 4/6(土) 行事6 4/7(日) 行事7 横方向はこれでうまく行く。 ==== 問題は Sheet1の第2行以下の場合だが Sheet2のA2は(2,1)で取ってくるのはSheet1の(8,1) その8は 理屈から((2-1)*7+1)である。 上記の第1行目の式で行の部分を変えるのはそう変える。 列は日付だからずっと1である。 したがって。=INDEX(Sheet1!$A$1:$B$100,INT((ROW()-1)*7+1+COLUMN()/2),1) 飛び飛び列へ貼り付けで 4/8(月) 4/9(火) 4/10(水) 4/11(木) 4/12(金) 4/13(土) 4/14(日) ーー 行事は =INDEX(Sheet1!$A$1:$B$100,INT((ROW()-1)*7+COLUMN()/2),2) 飛び飛び列へ貼り付けで 4/1(月) 行事1 4/2(火) 行事2 4/3(水) 行事3 4/4(木) 行事4 4/5(金) 行事5 4/6(土) 行事6 4/7(日) 行事7 4/8(月) 行事8 4/9(火) 行事9 4/10(水) 行事10 4/11(木) 行事11 4/12(金) 行事12 4/13(土) 行事13 4/14(日) 行事14 以下略。月中の日付を完成するには A1セルの式を完成し、 C1-M1 C2-M2 C3-M3 C4-M4 C5-M5  間での飛び飛びセルまたは列をCTRLを押しながら指定して CTRL+V 行事も同じ要領。 ーーーー 以上は思考過程に沿って説明したのでごたごたした。結論は 例データ 4/1(月) 行事1 4/2(火) 行事2 4/3(水) 行事3 4/4(木) 行事4 4/5(金) 行事5 4/6(土) 行事6 4/7(日) 行事7 4/8(月) 行事8 4/9(火) 行事9 ・・・ 4/26(月) 行事26 4/27(月) 行事27 4/28(月) 行事28 4/29(月) 行事29 4/30(月) 行事30 A1に式 =INDEX(Sheet1!$A$1:$B$100,INT((ROW()-1)*7+1+COLUMN()/2),1) これを日付のセルをCTRLを押しながら範囲指定(注)してCTRL+V B1の式 =INDEX(Sheet1!$A$1:$B$100,INT((ROW()-1)*7+COLUMN()/2),2) これを行事のセルをCTRLを押しながら範囲指定してCTRL+V 結果 4/1(月) 行事1 4/2(火) 行事2 4/3(水) 行事3 4/4(木) 行事4 4/5(金) 行事5 4/6(土) 行事6 4/7(日) 行事7 4/8(月) 行事8 4/9(火) 行事9 4/10(水) 行事10 4/11(木) 行事11 4/12(金) 行事12 4/13(土) 行事13 4/14(日) 行事14 4/15(月) 行事15 4/16(月) 行事16 4/17(月) 行事17 4/18(月) 行事18 4/19(月) 行事19 4/20(月) 行事20 4/21(月) 行事21 4/22(月) 行事22 4/23(月) 行事23 4/24(月) 行事24 4/25(月) 行事25 4/26(月) 行事26 4/27(月) 行事27 4/28(月) 行事28 4/29(月) 行事29 4/30(月) 行事30 0 0 0 0 0 0 0 0 0 0 上記0の処理とか 月末日超えの処理は複雑になるので略。 ーー 最後に本課題は、VBA向きの課題だと言って置きます。 (注)1つ1つのセルでなく、A2:A5、C1:C5、E1:E5、G1:G5、I1:I5、K1:K5、M1:M5 はマウスでドラッグできるので、やや作業が軽減される。 もちろんCTRLを押したままやる。 行事も同じ。

r-inarin
質問者

お礼

細かな説明までつけていただきありがとうございました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんにちは! 一例ですが・・・ Sheet1のA1からデータがあり、Sheet2に表示させるとします。 Sheet2のA1セルに =IF(COLUMN()>14,"",IF(MOD(COLUMN(),2)=1,INDEX(Sheet1!$A$1:$A$100,(COLUMN()+1)/2+(ROW()-1)*7),INDEX(Sheet1!$B$1:$B$100,COLUMN()/2+(ROW()-1)*7))) という数式をいれて、列方向と行方向にオートフィルでコピーしてみてください。 希望に近い形になると思います。 尚、数式はSheet1の100行目までデータがある場合としていますので データ量によって範囲指定はアレンジしてみてください。 そして、エラー処理はしていません。 ただし、今回の質問は、たまたま4/1が月曜日だったので Sheet2のA1セルから並び替えをすれば良かったですが、 必ず月曜日をSheet2のA1セルに表示させたい場合は 数式にもう一工夫必要になると思います。 以上、参考になれば幸いですが、 他に良い方法があれば軽く読み流してくださいね。m(__)m

r-inarin
質問者

お礼

回答ありがとうございました。 O列以降は表示されないのがいいですね。 ありがとうございました。 A1に月曜日がこないときは、4月1日からではなくて、月曜日になる日からはじめたいと思います。(ダミーです) 私にはそれで十分です。 式の意味はよくわかりせんがありがとうございました。

  • popuplt
  • ベストアンサー率38% (31/81)
回答No.1

入力がSheet1にあるとして 別シートで [A1]=INDEX(Sheet1!$A$1:$B$365,INT((ROW()-1)*7+(COLUMN()+1)/2),2-MOD(COLUMN(),2)) 右と下へコピペ。

r-inarin
質問者

お礼

質問して30分で回答いただきありがとうございます。 できました!! 式の意味はすっきりとはわかりせんが、 これからじっくり考えます。 日付の表示形式が変わってしまいましたが、特に問題ないです。 セルの書式設定で、すぐに元に戻すことができましたので。 ありがとうございました。

関連するQ&A

  • A1の曜日が(日)の場合、B1にA1の翌日を表示

    A列に 9/4(日) 9/5(月) 9/6(火) と入力されています。書式設定(aaa)で曜日も表示させています。 A1の日付が「日曜日」の場合は、B1にA1の翌日「9/5(月)」と表示させ 月曜日だったら3日後の日付を表示させ、 さらに、火曜日だったら6日後の日付を表示 出来上がりは  A     B 9/4(日) 9/5(月) 9/5(月) 9/8(木) 9/6(火) 9/12(月)  となります。 数式でも、マクロでも可ですが、作り方がわかりません…。

  • 横のデータを縦のデータにしたい

    sheet1, A列(A4にはタイトル)に種類、B列(B4にはタイトル)に名前、E3:AI3に日付、E4:AI4に曜日、E5:AI5 , E9:AI9・・・・4行置きに数値データがあり、A,B列、および日付、曜日だけ関数を使い、それぞれこのシートにデータが出るようにしています。E5:AI5 , E9:AI9・・・・4行置きには任意に入れています ※A列、B列も4行置きに、データ内容が変わります、A列はA5からデータ、B列はB5からデータで、A5:A8には同一の種類、B5:B8には同一の名前が入っています、表の大きさはA4:AI5000あります、よろしくおねがいします sheet2,(写真のように)データ表示させたい

  • エクセルで作る月間表 その2/3

    たびたびお世話になっております 再びエクセルに関する質問なんですが、 たとえばA1に「7月」 A2から順次「1日」、「2日」・・・「31日」 B列に曜日が表示され、 その表の下に、その月の曜日をカウントした表を作りたいのですが、 2005年の7月なら 日曜が5日(金、土も5日) 月曜が4日(火、水、木も4日) どのような式で求められるのでしょうか? 賢者のみなさん、ご教授をよろしくお願いいたします

  • 選択日付(曜日)を◎で表示させたいのですが

    選択日付(曜日)を◎で表示させたいのですが ■選択 B1=年 C2=月 ■選択条件(入力規則/リスト選択) D3=リスト(月・火・水・木・金・土・月水金・月金・火木土・火木) から D20=リスト(月・火・水・木・金・土・月水金・月金・火木土・火木) ■一覧表表示 CT2 から DX2 まで横一行に1日から31日までの日付 その下の行から表示エリア CT3 から DX20 までの表にその選択年月のリスト指定曜日に 「◎」を表示させたい。 ■例(B1=22年 C2=6月 D3=月曜) CZ3=7日/DG3=14日/DN3=21日/DU3=28日 該当セルに◎表示 それ以外のセルは空白 どうぞお知恵をよろしくお願い致します。

  • 関数を使って、「水・土・日」だけ×に

    Excelの表で、   A  B 1 月 2 火 3 水 4 木 5 金 ・ ・   とA列に曜日が入っているのですが、A列に表示されている曜日が、もし「水・土・日」曜日だった場合は、B列に「×」と表示されるようにしたいです。その他の曜日は空白にしたいです。  もしご存知の方教えてください。

  • 翌日の曜日を関数で表示するには

    たとえば、セルA1に月曜日と入れて(日付関数で入れずに文字列で入れるとします)B1には翌日の火曜日を表示させる様な関数はないでしょうか?ちなみにC1には水曜、D1には木曜とA1にある曜日を入れたらB1、C1、D1と翌日の曜日が入るようにしたいのです。 色々調べましたが、わかりませんのでよろしくお願いします。 A1  B1  C1 月  計算式  計算式   (表示火)(表示水) よろしくお願いします。   

  • 複数の空欄から値を返す関数について(質問)

    たとえばつぎのようにA1のセルに1週間の予定の有無を表示したいの ですが、Bの予定の列に任意の文字列を入れた場合、A1のセルには ”予定あり”が表示され、Bの予定の列に文字列がない場合、 ”予定なし”が表示されるテーブルをつくりたいと思っています。 どなたか詳しい方、教えてください。 A B A B 1 予定あり 1 予定なし 2 曜日 予定 2 曜日 予定 3 月 3 月 4 火 塾 4 火 5 水 5 水 6 木 6 木 7 金 塾 7 金 8 土 8 土 9 日 9 日

  • エクセルの当番表を作りたいのですが

    似たような質問があると思いますが、なかなか合ったものが無かったので質問させていただきます。 1か月の活動内容が記載されたカレンダーがありまして、A列に日付が1か月分入っています。 B列に当番の名前を入れたいのですが、毎日では無くて飛び飛びになっています。 具体的には、火・木・土・日だけしか当番の名前は入りません。 月次の予定表を兼ねているので、火・木・土・日だけの表示にする事はできません。 当番は10人で、1年間同じ順番で回ってきます。 大した数ではないので今まで直接打込んでいましたが 何か自動でできるような便利な方法がありましたら教えてください。 もう一つ、C列には、管理者が入ります。 管理者は火・木担当と、土・日担当がいます。 管理者は、曜日固定でいつも同じ人が入ります こちらも何か便利な方法があれば教えてください。 よろしくお願いします。

  • 縦に並んでいる表をマクロで横に並び替えたい。

    以下のような縦に並んだ表を、 (A列には、日付/NO、B列には文字列が入力されています。)    A      B  ------------- 1 │ 10月1日   2 │NO      3 │1      A 4 │2      B 5 │3      C 6 │10月2日 7 │NO 8 │1      D 9 │2      E 10│3      F 11│4      G 12│5      H 13│10月3日 14│1       I 15│2       J 16│10月4日 17│・      ・ 18│・      ・ 19│・      ・ 20│・      ・ 以下のように横に並び替えたい。    A      B    C     D    E     F     G ----------------------------------------------------------------- 1 │ 10月1日     10月2日      10月3日      10月4日 ・・・・   2 │NO         NO          NO          NO       3 │1      A   1      D    1      I 4 │2      B   2      E    2      J 5 │3      C   3      F 6 │           4      G 7 │           5      H 8 │      9 │ 日付ごとに項目数が異なるので、 どのようにマクロを組めばいいのか分からず困っております。。 ご回答よろしくお願い致します><!

  • 毎月、データ集計を取っているのですが

    毎月、データ集計を取っているのですが 稼動日1日目~5日目の合計を取る数式で 苦労しています。5日目までの数式が解れば 10日目、15日目は5日目までの応用だと 思うので、どうか教えて下さる方、 よろしくお願いします。 月により1日の曜日は変化します。 C列には数式が入っております 例:2月の場合 A B C 1 日 曜日 データ1 2 1 月 11 3 2 火 25 4 3 水 30 5 4 木 280 6 5 金 33 7 6 土 8 7 日 例:3月の場合 A B C 1 日 曜日 データ1 2 1 木 20 3 2 金 55 4 3 土 5 4 日 6 5 月 384 7 6 火 21 8 7 水 304

専門家に質問してみよう