シート1には名簿のデータが入っています。
シート2に連絡網の表があって、そこにデータを入れて行きたいと思います。
連絡網の一番上は会長、次段は役員で、それは別のところから持ってきます。
ここまではできています。
3段目以降に一般の人の氏名と電話番号を入れたいのですが、班毎に人数が
違います。40人いる班は、左の列から順に10人ずつわりふり、10人しかいない班は
画像のように列1、2は3人ずつ、列3,4は2人ずつ、という風に、人数を均等に割り振り
たいのですが、関数で出来ますでしょうか?
空欄の表が残るのは構いません。
よろしくお願い致します。
No.5ベストアンサー
- 回答日時:
作業列としてA列と16,17行を使います
A11セル 希望とする班番号
A13セル 班の人数
=COUNTIF(Sheet1!B:B,A11)
A16セル 班の先頭の人の行番号
=MATCH($A$11,Sheet1!$B:$B,0)
A18セル 1
A18:A20セルを選択して下へオートフィル、連番となる
B16セル 1
B16:G16セルを選択して下へオートフィル、連番となる
B17セル 記載される人数
=INT($A$13/4)+(MOD($A$13,4)>=1)
以下同様
H17セル =INT($A$13/4)+(MOD($A$13,4)>=2)
N17セル =INT($A$13/4)+(MOD($A$13,4)=3)
T17セル =INT($A$13/4)
B18セル 氏名
=IF($A18>B$17,"",
VLOOKUP($A18+SUM($B$17:B$17,-B$17),
INDEX(Sheet1!$C:$C,$A$16):INDEX(Sheet1!$E:$E,$A$16+$A$13),2,FALSE))
B19セル 電話
=IF(B18="","",
VLOOKUP($A18+SUM($B$17:B$17,-B$17),
INDEX(Sheet1!$C:$C,$A$16):INDEX(Sheet1!$E:$E,$A$16+$A$13),3,FALSE))
B18:B19セルを選択して コピー→それぞれの記入セルに貼り付け。
丁寧に教えていただき、どうもありがとうございました。
これから良く見て、実際に試して見たいと思います。
大変たすかりました。どうもありがとうございました。
No.6
- 回答日時:
#5です。
先ほどの回答はかなりまどろっこしいことをしている上制約条件があったので、改良案です。
B18セル 氏名
=IF($A18>B$17,"",INDEX(Sheet1!$D:$D,SUM($A18-1,$A$16,$B$17:B$17,-B$17)))
B19セル 電話
=IF($A18>B$17,"",INDEX(Sheet1!$E:$E,SUM($A18-1,$A$16,$B$17:B$17,-B$17)))
B18:B19セルを選択して コピー→それぞれの記入セルに貼り付け。
# OFFSET関数は揮発性(計算と関係ないセルを入力/削除しても再計算する)があるので
# 極力使わないほうが良いです。
No.4
- 回答日時:
役員毎の開始行、人数、必要ユニット数、開始ユニット位置の表を作成して
これを参照してマクロを作成します。
※10名分を1ユニットとします。
※10名未満の役員は1ユニットでよいのでは
※名簿と連絡網は同一のsheet上に作成し、印刷時は印刷範囲を設定します。
※以下は1役員の連絡網作成のマクロです。
Sub 連絡網作成()
Dim I, N, M
Columns("G:I").Select
Selection.ClearContents
Selection.NumberFormatLocal = "G/標準"
N = Range("E3")
M = Round(N / 2 + 0.1, 0)
For I = 1 To M
Range("G" & 3 * I) = Range("C" & I + 2)
Range("G" & 3 * I + 1) = Range("D" & I + 2)
Next I
For I = M + 1 To N
Range("I" & 3 * (I - M)) = Range("C" & I + 2)
Range("I" & 3 * (I - M) + 1) = Range("D" & I + 2)
Next I
Range("A1").Select
End Sub
添付と見比べて位置関係をチェックしてください。
丁寧に教えていただきまして、どうもありがとうございました。
マクロは使ったことがないので、これからよく見て、実際におしえていただいた通りにやってみて、勉強したいと思います。
どうもありがとうございました。
No.3
- 回答日時:
久しぶりにのぞいてみました。
今は画像が使えるんですね。使い方が分かりません。。。データは削除などせず、出力の算式は2つ(実質1つか)、設定で2つにしました。分かりやすくするためにセル範囲に範囲名を付けています。
【シート1での設定です】
まず、データはシート1にあり、地区、班ごとの処理の都度、データの削除はしません。地区も複数あり、地区、班、番号で昇順にソートされているとします。出力する地区と班を入力することになります。
処理を単純にするためにセル範囲に範囲名を付けます。
データ内のセルを1つ選び、Ctrl+Shift+*でデータをすべて選択します。(*はアスタリスク)
この状態で、メニューから挿入>名前>作成とし、上端行だけにチェックしOK。
これで地区、班、番号、氏名、電話番号というセル範囲が登録されました。確認は名前ボックスで範囲名を確認して下さい。
【シート2での設定です】
今、セル範囲A18:S46が出力用に使われているはずです。計算を楽にするためにセルに数値を入力します。以下、入力するセルは例です。なにか使ってあれば別セルにしてください。(既に使ってあればそちらを動かすのが賢明です。多分)
A1:=0、G1:=1、M1:=2、S1:=3 横の座標になります。
U18:=0、U21:=1、U24:=2、・・・、U45:=9 縦の座標です。3行おきになっています。
出力する地区、班を入力するセルを設定します。
U7:=地区、U8:=班、U9:=最初、U10:=人数 と入力します。
U7:V10を選択して、挿入>名前>作成とし、左端列だけチェックしOK。
式を入力します。
「最初」は指定した地区、班の先頭位置の計算。
セルV9:=SUMPRODUCT((地区<$V$7)+(地区=$V$7)*(班<$V$8))+1
「人数」は指定した地区、班の人数の計算。
セルV10:=SUMPRODUCT((地区=$V$7)*(班=$V$8))
A18:=IF($U18*4+A$1<人数,INDEX(氏名,最初+$U18+A$1*INT(人数/4)+MIN(MOD(人数,4),A$1)),"")
A19:=IF($U18*4+A$1<人数,INDEX(電話番号,最初+$U18+A$1*INT(人数/4)+MIN(MOD(人数,4),A$1)),"")
とします。設定と位置が合っていれば、上式をコピーすればうまくいくでしょう。
この2つのセルの算式をコピーし、他の出力セルに貼り付けてください。
後は、出力したい地区と班を U7、U8 に入力してください。これだけで連絡網ができているはずです。
当方、Excel2000(古い)で確認しました。
とても丁寧にご指導いただき、どうもありがとうございました。
座標を使った方法は初めてなので、大変勉強になりました。
これからじっくり良く見て考えたいと思います。
どうもありがとうございました。
No.2
- 回答日時:
極めて複雑な数式を入れ子にすれば、1つのセルで表示することも可能ですが、以下のように1行補助行を設けて、このセルに表示データ数を表示させるのが良いと思います。
A1セルに班の番号が入力されている場合、以下の式にそれぞれ数式を入力してしてください。
A17セル
=ROUNDUP(COUNTIF(Sheet1!$B:$B,$A$1)/4,0)
G17セル=ROUNDUP((COUNTIF(Sheet1!$B:$B,$A$1)-SUM($A$17:F17))/(5-((COLUMN(G17)-1)/6+1)),0)
このG17:L17セルを選択して右方向にオートフィルコピー。
A18セル
=IF(A$17<(ROW(A1)-1)/3+1,"",OFFSET(Sheet1!$D$1,MATCH($A$1,Sheet1!B:B,0)+(ROW(A1)-1)/3-1,0))
A19セル
=IF(A18="","",VLOOKUP(A18,Sheet1!$D:$E,2,0))
A18:A20を選択して下方向にオートフィルコピー
G18セル
=IF(G$17<(ROW(A1)-1)/3+1,"",OFFSET(Sheet1!$D$1,MATCH($A$1,Sheet1!$B:$B,0)+(ROW(A1)-1)/3-1+SUM($A$17:F$17),0))
G19セル
=IF(G18="","",VLOOKUP(G18,Sheet1!$D:$E,2,0))
G18:L20を選択して、下方向および右方向にオートフィルコピー。
上記の数式を設定して、17行目を非表示にしてA1セルに班番号を入力すると、ご希望のレイアウトの連絡表が作成できます。
連絡表にすでに罫線などが設定してある場合は、右クリックでオートフィルして「書式なし」を選択してください。
大変丁寧にご説明いただき、どうもありがとうございました。
これからじっくり良く見て勉強させていただきます。
右クリックでオートフィルして「書式なし」とできるのを、初めて知りました!
これからいっぱい使いそうです。
どうもありがとうございました。
No.1
- 回答日時:
レイアウトが不明瞭なので、ちょっと答えにくいですねぇ。
連絡網の3段目以降のそれぞれのセルのアドレスは?
1 4 7 9
2 5 8 10
3 6
ではなく、
1 2 3 4
5 6 7 8
9 10
としたほうが少し簡単になると思いますが、それではダメですか?
お目にとめていただいて、どうもありがとうございます。
セルのアドレスは、
氏名A18G18M18S18
電話A19G19M19S19
氏名A21G21M21S21
電話A22G22M22S22
.
.
.
という感じで10段です。
番号順に流したいので、
1479
25810
36
の順に出したいのです。
シート1のデータは、自分の班だけ残して削除してしまって構わないです。
ただ、連絡網は勝手に出来上がってほしいのです。
A列の最大値+1がG列に入るようにしたいのですが、無理でしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの設定、下へスクロー...
-
Excelの関数を教えて下さい。
-
エクセルの設定、特定の列以降...
-
自動的に日付入力 応用
-
UNIQUE関数の代用
-
Vba アドインソフトのバージョ...
-
Excelファイルを開くと私だけVA...
-
エクセルの数式について教えて...
-
Excelでプルダウン選択(I1セル)...
-
ユーザーマクロ作成
-
Excel 日付の表示が直せません...
-
Excelのsumifで検索する範囲を...
-
エクセルの数式につきまして
-
エクセルの数式について教えて...
-
Excelで、すでに書いてある表を...
-
エクスプローラーで見ることは...
-
vba 印刷設定でのカラー印刷と...
-
Vbaをバッチ処理で動かす方法に...
-
SUBTOTAL関数のように同関数の...
-
エクセルの条件付き書式設定に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】重複する同じ行を、...
-
Excelの条件付き書式のコピーと...
-
vba 印刷設定でのカラー印刷と...
-
VBA の単語の意味を教えて下さい。
-
Excel 日付の表示が直せません...
-
エクセル 同じ行の隣り合う数字...
-
エクセル条件付き書式について。
-
エクセルの数式につきまして
-
ファイル名の変更
-
エクセル 数字のみ抽出につて
-
Excelの開始ブックを固定したい...
-
エクセルの数式について教えて...
-
エクセルのセルをクリックする...
-
=INDIRECT(RIGHT(CELL("filenam...
-
エクスプローラーで見ることは...
-
Excelの関数で質問です
-
至急お願いいたします 屋上の備...
-
エクセルでセルに入力する前は...
-
関数を教えて下さい
-
Excel 関数での質問です
おすすめ情報