シート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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) マクロか関数で処理したいのですが、教えて頂けませんか。 8 2022/10/31 15:18
- Excel(エクセル) ある数値に対して、値を返す数式についてです 2 2022/09/13 22:06
- Excel(エクセル) エクセルで割り振りをする方法 7 2022/08/02 14:02
- Excel(エクセル) EXCEL 関数を教えてください。(A列の同じ値が複数ある場合vlookupで出来ますか) 4 2022/12/07 20:54
- Excel(エクセル) 請求書と領収書の作成 4 2022/11/10 16:13
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- Excel(エクセル) 指定した条件でTRANSPOSE関数を使う 5 2023/08/18 19:45
- その他(Microsoft Office) EXCELの1行を1枚の用紙にそれぞれ印刷したい。 3 2022/10/10 11:35
- Visual Basic(VBA) 2つのシートの任意のセルの番号が一致したら、一致した行をコピーする VBA 2 2023/06/19 20:48
- Excel(エクセル) 別シートに毎回異なるデータをコピーする 7 2022/06/24 09:02
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの警告について
-
各種ファイルの比較をしたい
-
エクセル この場合、値の抽出で...
-
excelvbaでcsvファイルをセルに...
-
Excelのブック内のシートの色を...
-
パソコン教室ってExcelとかどこ...
-
エクセルのデータについて
-
セル内が空白設定なのに#N/Aと...
-
エクセルの不調について
-
1.5ヶ月分の費用按分 エクセル関数
-
【VBA】使ってたクエリの接続を...
-
IEを使わずHTMLを取得する
-
エクセルで、数字の下4桁の0を...
-
UNIQUE関数、配列数式を使わず...
-
【マクロ】メッセージボックス...
-
アクセス2016 エクセル2016 重...
-
11ケタの数字を打つと、エク...
-
vbe でのソースコード参照(msgb...
-
最新I/e?のキャッシュクリア
-
カーソルを合わせてる時のみ行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの警告について
-
エクセルの数式バーのフォント...
-
【Excel】日付に連動してプルダ...
-
【再投稿】レイアウトが異なる...
-
Excelについて教えてください ...
-
同率順位の発生しないランキン...
-
エクセルマクロについて教えて...
-
【Excel VBA】 テキストファイ...
-
Excel 標準フォントについて教...
-
Excelの計算で差分を求める場合...
-
Excelの区切り文字について質問...
-
大容量があつかえるソフトを探...
-
エクセルの計算式について(COU...
-
エクセルについて
-
今までは、 「CSVの出力先を選...
-
Excel ショートカットで列、行...
-
8:40までの出勤は全て8:30に...
-
if関数。半角文字や全角文字で...
-
エクセルの関数
-
毎週追加して行くセルの数値を...
おすすめ情報