アプリ版:「スタンプのみでお礼する」機能のリリースについて

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)されたのでそれを参考にすればわかるのですが…
よろしくお願いします。
 

A 回答 (8件)

複雑な式を使いたくない場合は以下のようにします。



データシートを「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)置換機能を使って「#」を「=」に置換します。

以上です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/08/13 15:39

図添付の都合で別シートにしていませんが、適当に直してください。


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」は「月」に合わせるためです。
「縦2行のデータを横14行で表示させるには」の回答画像8
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/08/14 21:56

回答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)))
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/08/14 21:25

回答No5です。


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

月初めが月曜とは限りませんね。


データが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)と設定することで最終的な表が出来上がります。

この回答への補足

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

補足日時:2009/08/14 06:29
    • good
    • 0

エクセル関数の数式は、値を受けるセルに入れるのはわかりますね。


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(月)行事14/2(火)行事24/3(水)行事34/4(木)行事44/5(金)行事54/6(土)行事64/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(月)行事14/2(火)行事24/3(水)行事34/4(木)行事44/5(金)行事54/6(土)行事64/7(日)行事7
4/8(月)行事84/9(火)行事94/10(水)行事104/11(木)行事114/12(金)行事124/13(土)行事134/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(月)行事14/2(火)行事24/3(水)行事34/4(木)行事44/5(金)行事54/6(土)行事64/7(日)行事7
4/8(月)行事84/9(火)行事94/10(水)行事104/11(木)行事114/12(金)行事124/13(土)行事134/14(日)行事14
4/15(月)行事154/16(月)行事164/17(月)行事174/18(月)行事184/19(月)行事194/20(月)行事204/21(月)行事21
4/22(月)行事224/23(月)行事234/24(月)行事244/25(月)行事254/26(月)行事264/27(月)行事274/28(月)行事28
4/29(月)行事294/30(月)行事300000000000

上記0の処理とか
月末日超えの処理は複雑になるので略。
ーー
最後に本課題は、VBA向きの課題だと言って置きます。
(注)1つ1つのセルでなく、A2:A5、C1:C5、E1:E5、G1:G5、I1:I5、K1:K5、M1:M5
はマウスでドラッグできるので、やや作業が軽減される。
もちろんCTRLを押したままやる。
行事も同じ。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/08/14 05:52

こんにちは!


一例ですが・・・

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
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/08/13 16:25

入力がSheet1にあるとして


別シートで
[A1]=INDEX(Sheet1!$A$1:$B$365,INT((ROW()-1)*7+(COLUMN()+1)/2),2-MOD(COLUMN(),2))
右と下へコピペ。
    • good
    • 0
この回答へのお礼

質問して30分で回答いただきありがとうございます。
できました!!
式の意味はすっきりとはわかりせんが、
これからじっくり考えます。

日付の表示形式が変わってしまいましたが、特に問題ないです。
セルの書式設定で、すぐに元に戻すことができましたので。

ありがとうございました。

お礼日時:2009/08/13 15:16

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