シート1には名前・ID・クラスなどが入力してあります。
シート2に簡単なクラス別の表を作成したいです。
クラス1 田中 佐藤 小松 遠山 青山
高橋 清水
クラス2 長井 鈴木 成田 横田
このような感じで1クラス5列で2段くらいで作成したいと考えています。クラスの人数はバラバラです。
クラス別に抽出する方法が知りたいです。また1→2に変更した場合に表のところでもクラス2に移動しているのが理想です。クラスの人数が増える場合もあるので抽出先のセルの指定している数式かコードも教えて頂けると大変助かります。
あまり詳しくないのでご教授お願いいたします。
No.3ベストアンサー
- 回答日時:
No.1さん、No.2さんのおっしゃる通りだと思います。
でも、面白そうなので作ってみました。ppiroさんのイメージと、ちょっと違いますが、お暇なら試してみて下さい。
【仕様】
クラス番号を入力(または変更)すると、その生徒を該当クラスの箇所にリアルタイムで移動します。
下記の準備を行った後、名前、ID、クラスを入力してください。
ちなみに、クラスを入力(変更)したタイミングで移動が発生しますので、先にクラスを入力すると中途半端な状態で移動させてしまいます。クラスは最後に入力しましょう!!
コピペ等で複数セルが一挙に変更された場合、最初の生徒のみが移動対象となります。2番目以降の生徒は、一人ずつ手でクラスを入力して、移動させる必要があります。
【準備】
Sheet1の1行目を見出しと、次のように入力します。(見出しなので、文字は適当でもOKです)
A1セル 名前
B1セル ID
C1セル クラス1 ※ここまでで、1クラス分です。このパターンで必要なだけ作成してください。
D1セル 名前
E1セル ID
F1セル クラス2
・
・
・
次に、Sheet1のコードモジュールに次のコードを張り付けます。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MyRange As Variant
Dim Seito As Range
For Each Seito In Target
If Seito.Row <> 1 And _
Seito.Column Mod 3 = 0 Then
MyRange = Seito.Address()
Call MoveSeito(Seito)
Range(MyRange).Select
End If
Exit For
Next
End Sub
Public Sub MoveSeito(ByVal Target As Range)
Dim FromRange As Range
Dim ToRange As Range
Dim ClassColumn As Long
Dim I As Long
Cells.Interior.Pattern = xlNone
Set FromRange = Range(Target, Target.Offset(0, -2))
With FromRange.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 49407
.TintAndShade = 0
.PatternTintAndShade = 0
End With
ClassColumn = Target.Value * 3
For I = 2 To Cells(Cells(Rows.Count, ClassColumn).End(xlUp).Row, ClassColumn).Row + 1
If Cells(I, ClassColumn).Offset(0, -1) = "" Or _
Cells(I, ClassColumn).Offset(0, -1) > Target.Offset(0, -1) Then
Set ToRange = Cells(I, ClassColumn)
Set ToRange = Range(ToRange, ToRange.Offset(0, -2))
Exit For
End If
Next I
Application.EnableEvents = False
FromRange.Copy
ToRange.Insert Shift:=xlDown
FromRange.Delete Shift:=xlUp
Application.EnableEvents = True
End Sub
大量の、コピペを使うので私のやりたいこと違いましたが、コードをわざわざ作って頂いたことが嬉しかったのでベストアンサーに選ばせて頂きます。
No.2
- 回答日時:
>1クラス5列で2段くらいで作成したいと考えています。
>クラスの人数はバラバラです。
クラスの人数がバラバラなら、5列2段で収まらない時も起きうるのでは?
年に一度程度であれば、わざわざシステム化する必要もなく
並び替えとコピペで対応した方が早くないですか?
収まらないので、セルの抽出先で何処を、変えたらいいかも質問しています。
年に1度とは言ってませんし。表の並べ替えとコピペそれとデータの方も書き変えないといけないので。毎回100件位あるとどうしてもミスが出てしまうので1度の処理で出来るよう考えていました。
No.1
- 回答日時:
》 このような感じで…作成したいと考えています
「あまり詳しくない」とのことですが、貴方は何処までならお出来になるのでしょうか?
ひょっとして全く出来ないので、丸投げしているとか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL 【MySQL】本当に困っているので、助けてください。よろしくお願いします。 3 2023/06/03 14:24
- Excel(エクセル) 別シートに毎回異なるデータをコピーする 7 2022/06/24 09:02
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Excel(エクセル) Excelで全クラスのランキング表を作成したい 4 2022/05/24 15:28
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Excel(エクセル) Excelマクロの差分抽出のコードを教えていただきたいです。 2 2023/03/14 11:40
- Excel(エクセル) Excel 本人の名前だけが入った表を印刷したい。 3 2023/05/10 11:38
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- Excel(エクセル) EXCEL 関数を教えてください。(A列の同じ値が複数ある場合vlookupで出来ますか) 4 2022/12/07 20:54
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アルキメデスの大戦の櫂はなぜ2...
-
自作のクラスファイルがインポ...
-
java eclipse 型に解決できません
-
グローバルIPとプライベートIP...
-
「天声人語」をインターネット...
-
IPアドレスの3バイト目の呼び方
-
packageとimport の違いって?
-
配列の重複する値とその個数を...
-
eclipseのパッケージって何?
-
会員制スポーツクラブ
-
河合塾
-
Java「デフォルトのパッケージ...
-
アクション?ロジック?
-
どこからも呼ばれていない無意...
-
クラスのプロパティに構造体を...
-
成人式の後中3のクラスで集まろ...
-
CImageクラスをVisualC++6.0で...
-
クラスにアクセスできません。
-
EclipseでJSPのコンパイルエラー
-
リアル世界三大贅沢とは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
グローバルIPとプライベートIP...
-
配列の重複する値とその個数を...
-
java eclipse 型に解決できません
-
「天声人語」をインターネット...
-
オブジェクト指向プログラミン...
-
同一パッケージにあるクラスが...
-
SQLです教えてくださいお願いし...
-
自作のクラスファイルがインポ...
-
packageとimport の違いって?
-
重複エラーを解決するには
-
1 つのヘッダファイルに複数の...
-
UMLのクラス図はmain()も含むん...
-
main()を持つクラスが2つ以上...
-
3年間同じクラスになる確率
-
河合塾のクラス分けについて
-
EclipseでJSPのコンパイルエラー
-
どこからも呼ばれていない無意...
-
IPアドレスの3バイト目の呼び方
-
同じクラスにならない確率を教...
-
IPアドレスのクラスAを取得して...
おすすめ情報