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)置換機能を使って「#」を「=」に置換します。
以上です。
早々にご回答いただきありがとうございます。
「目から鱗が落ちる」そんな感じです!
なるほどね!
ありがとうございます。
こちらの方法だと、日付の表示形式が変わりませんでした。
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」は「月」に合わせるためです。
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)))
再度ご回答いただきありがとうごます。
できました!!
表示された結果はまったく望んだ通りというか…充分過ぎます。
ここまで出来るなんて思ってもいなかったので驚きです。
関数だけでもここまでできるんですね。
本当に驚きです。
唯一問題と言えば…
私の力ではまったく式の意味が理解できないことです。
私にはレベルが高過ぎて…。
でも、ありがとうございました。
No.6
- 回答日時:
回答No5です。
Sheet1でのB1の入力の式は以下のように変更してください。
=IF(A1="","",C1&"/"&IF(C$1=1,COUNTIF(C$1:C1,1),COUNTIF(C$1:C1,1)+1))
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)と設定することで最終的な表が出来上がります。
この回答への補足
ご回答ありがとうございます。
日付の表示の仕方までていねいにご説明いただきありがとうございます。
作業列のことで質問させてください。
B列には行事が入力されています。そのB列に式を入力すると行事が消えてしまうのですが?別シートでしょうか?
また、「Sheet2 のA1セルには次の式を入力して…」と書かれているのでが、その式とは?
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(月)行事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を押したままやる。
行事も同じ。
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
回答ありがとうございました。
O列以降は表示されないのがいいですね。
ありがとうございました。
A1に月曜日がこないときは、4月1日からではなくて、月曜日になる日からはじめたいと思います。(ダミーです)
私にはそれで十分です。
式の意味はよくわかりせんがありがとうございました。
No.1
- 回答日時:
入力がSheet1にあるとして
別シートで
[A1]=INDEX(Sheet1!$A$1:$B$365,INT((ROW()-1)*7+(COLUMN()+1)/2),2-MOD(COLUMN(),2))
右と下へコピペ。
質問して30分で回答いただきありがとうございます。
できました!!
式の意味はすっきりとはわかりせんが、
これからじっくり考えます。
日付の表示形式が変わってしまいましたが、特に問題ないです。
セルの書式設定で、すぐに元に戻すことができましたので。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 列 A に同じ日が2つが必要です。 1 2023/03/28 07:25
- Visual Basic(VBA) 祝日を除いた月曜から土曜までの1週間分の日付行を選択し、別シートへカットアンドペーストしたい 13 2023/07/13 22:46
- Excel(エクセル) Excel セルに入っている日付を参照して、別シートのリストを表示させたい 1 2022/04/12 17:02
- Visual Basic(VBA) 【Excel VBA】条件に合った行の表示・非表示を行う方法 3 2023/03/18 12:31
- Excel(エクセル) 特定文字(数字)で行挿入、挿入された行で合計したい 2 2023/03/13 14:30
- Excel(エクセル) 列を自動で追加したい 3 2022/07/11 12:58
- Excel(エクセル) 条件付き書式 一致する曜日の列にある○のセルに色を付けたい 2 2022/04/19 05:40
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける 3 2022/09/10 07:55
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 3 2022/06/12 11:17
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【関数】スペースがいくつ入っ...
-
西暦や和暦の表示をyyyymmdd表...
-
Excelのセルを飛ばして入力する
-
Excelのオートフィル
-
別シートからの文字を変更
-
Excel 2019 のピボットテーブル...
-
エクセルの行の抽出について質...
-
【マクロ】エクセルにかいてあ...
-
スプレッドシート クエリ関数 1...
-
エクセルでセルに「氏名を入力...
-
MOS365 Excel Expert / Excel R...
-
excelの不要な行の削除ができな...
-
EXACT関数とIF関数の組み合わせ...
-
スプレッドシートの関数VLOOKUP...
-
Excelで全角を半角にしたいので...
-
Excel初心者です。 詳しい方、...
-
エクセルの数式で教えてください。
-
4つのパターンを表示するEXACT...
-
スマートな関数を教えて下さい。
-
【Excel】セル内の時間帯が特定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル内にある数字の出現回...
-
Excel関数の先頭に「@」が入っ...
-
エクセルの気味悪い不思議
-
Excel VBAで、実行時にsheet上...
-
表示されている人数だけを数え...
-
他人が作ったマクロの理解
-
Excelの関数について質問です。
-
Excel 集計表
-
エクセル 日時の計算式について
-
Excelの関数に関して質問です。...
-
エクセル:セル内の文字列の下...
-
絞り込み検索
-
エクセルの関数で
-
エクセルの書式設定について教...
-
余分なEXCELファイルに印刷され...
-
VBA 同一シート内での転記の仕方
-
長期休みの関数はありますか
-
Excelの空のセル
-
エクセルで入力してある文を別...
-
Excelのマクロで、セルを結合し...
おすすめ情報