[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セルの内容のみずらす』(ゆうか)
こんな機能があるのかな?と知りたいので、エクセルにお詳しい方に教えていただきたく思います。無知なものでおかしい文だったら本当にごめんなさい。
横軸が月曜〜金曜、縦軸が1限〜6限、合計30コマがあります。
この30コマは、それぞれ上下に別れていて、
上に教科(例えば国語)名、下には内容(例えば、物語1)と入力してあります。
授業が思ったより進んだり、進まなかったりした時に、教科の欄はそのままに、内容の欄を前または後ろの教科の欄に自動的に移動する方法はないでしょうか?
申し訳ありませんが、教えて頂けると嬉しいです。
< 使用 Excel:unknown、使用 OS:unknown >
>この30コマは、それぞれ上下に別れていて、 >上に教科(例えば国語)名、下には内容(例えば、物語1)と入力してあります。 >内容の欄を前または後ろの教科の欄に自動的に移動する方法はないでしょうか? 理解不能。表を提示してみてくれ。 (jk) 2020/05/20(水) 20:31
既存の機能にはありません。
でも、それ面白いですね。VBAで作ってあげますよ。
1.具体的なレイアウトを掲示してください。(セル番地が分かるもの)
2.過去はぐちゃぐちゃになってもいいんですね? ※早く進んだら、今日やったことは上書きされて消える ※遅くなったら、今日やったことが明日もダブル
3.遅れた結果、はみ出す30コマ目はどう処置するんですか? (来月分がどこかにあって、それらを押し下げる様にするんですか)
(半平太) 2020/05/20(水) 20:35
数式での案です。 とりあえず、こんな表を作ります。
A B C D E F G H I J 1 曜日 限目 教科 内容 国語 数学 科学 歴史 英語 2 月 1限目 国語 物語1 物語1 計算1 物理1 日本史1 文法1 3 月 2限目 数学 計算1 物語2 計算2 物理2 日本史2 文法2 4 月 3限目 科学 物理1 物語3 計算3 物理3 日本史3 文法3 5 月 4限目 歴史 日本史1 物語4 計算4 物理4 日本史4 文法4 6 月 5限目 数学 計算2 物語5 計算5 物理5 日本史5 文法5 7 月 6限目 英語 文法1 物語6 計算6 物理6 日本史6 文法6 8 火 1限目 数学 計算3 9 火 2限目 英語 文法2 10 火 3限目 英語 文法3 11 火 4限目 数学 計算4 12 火 5限目 歴史 日本史2 13 火 6限目 国語 物語2
この表の1行目は見出しで固定です。 また、A列とB列も固定です。 C列には教科の名前を入力してください。
次に準備として、F2:F7に「国語」という名前を付けます、 さらに、数学、科学・・・にも同様に名前を付けます。
D2に、=INDEX(INDIRECT(C2),COUNTIF($C$1:C2,C2))&"" と入力して下にコピーすると、上の表のようになります。
この表のC列とD列を、ゆうかさんが作った元の表にリンクさせます。
実際に「内容」の表示をずらすときは、FからJ列の目的のところで、挿入→下にシフト、や コピー・ペーストなどで「内容」部分をずらせば、表の部分の「内容」も同時にずれてくれるはずです。
ただし、各教科の2行目(教科名の直下のセル)で挿入すると名前の範囲そのものが移動してしまうので、 ここはコピーなどで対応してください。
もしかしたら、ご期待通りではないかもしれませんが・・・
(tora) 2020/05/20(水) 20:37
1. レイアウトお伝えしたいのですが、この掲示板は写真など置かれるのでしょうか?
2. 過去はぐちゃぐちゃになったらだめです。
3..一週間1シートになっていて、次の週のその教科に行くようにしたいです。
toraさん、ご回答ありがとうございます!
もとになるやつを反映するやり方、なるほどと思いました!
やりたいのですが、使っているファイルは学校で使っているもので、国語を何時間したとか計算するやつもついているのですが、使って大丈夫なのでしょうか?
(ゆうか) 2020/05/20(水) 21:02
>1. レイアウトお伝えしたいのですが、この掲示板は写真など置かれるのでしょうか? toraさんが書いたものをコピーして、自分用に作っていただくしかないです。
>2. 過去はぐちゃぐちゃになったらだめです。 あれ、そうなんですか。
すると、どんな風にズラすのかキチンと説明いただく必要があります。 漠然としたアイデアだけではプログラムは書けません。
>3.一週間1シートになっていて、次の週のその教科に行くようにしたいです。 一カ月分でワンセットかと思ってました、 ますます、レイアウトを示していただくのが重要になります。
(半平太) 2020/05/20(水) 21:13
いろいろやりたいことがあるようですが、いずれも運用次第では可能かとは思いますが、 現実にどうすればいいかは半平太さんの質問にお答えいただき、半平太さんの回答を待ちましょう。
前回の回答で、 ただし、各教科の2行目(教科名の直下のセル)で挿入すると名前の範囲そのものが移動してしまうので、 ここはコピーなどで対応してください。
としていましたが、
次に準備として、F2:F7に「国語」という名前を付けます ↓ F1:F7 と変更し、 ^^^^ D2に、=INDEX(INDIRECT(C2),COUNTIF($C$1:C2,C2))&"" と入力して下にコピー
=INDEX(INDIRECT(C2),COUNTIF($C$1:C2,C2)+1)&"" に変更すれば ^^^^ 教科名の直下への挿入でも対応できます。 ご参考までに。
(tora) 2020/05/21(木) 09:32
こんばんは! ちょっと書いてみました。。。。
A1から↓みたいなレイアウトがあったとして、、 ダブルクリックで選択したセル以降を右へ進めます。 右クリックで選択したセルを基準に左へ戻します。
シートは必要分増やして頂いて構いません。 ただ、、最終のシートからはみ出たデータは元に戻せません(仕様です。。(^^;) それと同じく選択したセルを起点に戻すことによって消えたデータも元に戻せません。(これまた、、仕様です。。あきらめてください(笑))
3行目と5行目、7行目、9行目、11行目、13行目で反応する様にしています。。。 応用して頂けると助かります。
まぁ、、なにかの足しにでもして頂けたら幸いです。 ThisWorkbookモジュールに貼り付けます。。。。
では、、では、、
_A_______B________C_______D_______E_______F___
月曜日 火曜日 水曜日 木曜日 金曜日 1限 国語 国語 国語 国語 国語 a1 a2 a3 a1 a2 2限 理科 理科 理科 理科 理科 b1 b2 b3 b4 b5 3限 社会 社会 社会 社会 社会 c1 c2 c3 c4 c5 4限 道徳 道徳 道徳 道徳 道徳 d1 d2 d3 d4 d5 5限 体育 体育 体育 体育 体育 e1 e2 e3 e4 e5 6限 算数 算数 算数 算数 算数 f1 f2 f3 f4 f5
Option Explicit Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) Dim MyTbl As Range Dim ws As Worksheet Dim r As Range Dim i As Long Dim k As Long Cancel = True With Sh Set MyTbl = .Range("B3").Resize(, 5) For i = 5 To 13 Step 2 Set MyTbl = Union(MyTbl, .Range("B" & i).Resize(, 5)) Next End With If Intersect(MyTbl, Target) Is Nothing Then Exit Sub ReDim v(0) For Each ws In Worksheets For Each r In ws.Range("B" & Target.Row).Resize(, 5) ReDim Preserve v(k) v(k) = r.Value k = k + 1 Next Next k = 0 For Each ws In Worksheets For Each r In ws.Range("B" & Target.Row).Resize(, 5) k = k + 1 r.Value = v(k - 1) If ws Is Sh Then If r.Address = Target.Address Then r.Value = Empty k = k - 1 End If End If Next Next Set MyTbl = Nothing Erase v End Sub Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) Dim MyTbl As Range Dim ws As Worksheet Dim r As Range Dim i As Long Dim k As Long Cancel = True With Sh Set MyTbl = .Range("B3").Resize(, 5) For i = 5 To 13 Step 2 Set MyTbl = Union(MyTbl, .Range("B" & i).Resize(, 5)) Next End With If Intersect(MyTbl, Target) Is Nothing Then Exit Sub ReDim v(0) For Each ws In Worksheets For Each r In ws.Range("B" & Target.Row).Resize(, 5) ReDim Preserve v(k) v(k) = r.Value k = k + 1 Next Next k = 0 For Each ws In Worksheets For Each r In ws.Range("B" & Target.Row).Resize(, 5) k = k + 1 If k <= UBound(v) + 1 Then r.Value = v(k - 1) If ws Is Sh Then If r.Address = Target.Address Then k = k + 1 If k <= UBound(v) + 1 Then r.Value = v(k - 1) End If End If End If Else r.Value = Empty End If Next Next Set MyTbl = Nothing Erase v End Sub (SoulMan) 2020/05/21(木) 22:11
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.