左の入力欄に該当する名前を右の名前欄にコピー
各ホールごとに上から順に入れたい
つまり、参考の表は、左端の行番号は無視して、左の2列と右の2列に分かれていて、
左の表は「先着順でホールの利用希望者名と利用希望のホール名」が書かれていて、
右の表は左の表から、先着順で、各ホールごとに、実際に利用可能な利用希望者名をリストしたい、
(表の例で言えば、各ホール一度に4名までは利用可能なので、ホール名が4つずつある)
という事ですね?
VBAを使って関数を定義するのが一番分かりやすいと思いますが、
それはきっと別の方が回答してくれると思いますので(笑)、
私は、ワークシート上の標準関数のみでやってみました。
こういう感じになります:
(使用バージョン Microsoft Excel 2003)
セルD2には
=IF(ISNUMBER(E2),INDEX($A$2:$A$13,E2),"")
セルE2には
=MATCH(C2,OFFSET($B$2:$B$13,IF(C2=C1,E1,0),0,ROWS($B$2:$B$13)-IF(C2=C1,E1,0)),0)+IF(C2=C1,E1,0)
という式が入っています。
D列とE列の残りの行は、D2:E2をそのまま下方向コピーした内容です。
ホール名は参考表のように、必ずひとかたまりになっている事を前提としています。
E列は中間結果の保持のために必要ですが、邪魔でしたら、列幅を0にするなどで隠せば良いでしょう。
ご覧の通り、あまりスマートではありません。スマートさでは、やはりVBAで関数を作成するのが一番いいですね。
ご質問の際には、基本的には「トラックバック・コメントを受け付ける」設定にされた
状態の方が宜しいかと思います。回答受付を開始した後でも
「回答受付一時停止→トラバ・コメ受付可→回答受付再開」で変更できます。
---
左から4列目のホール名のところで、何故ホール名が4つずつあるのか、
そこの理由が判らない上、Excelのバージョンも不明なので明確な回答はできませんが、
次の様な方法はいかがでしょうか。Excel 2007か2010を想定しています。
1~3列目が記入されていて、4列目と5列目は空白の状態であるとします。
1) 2列目の「名前」を5列目にコピー
一番上の列見出し("B"と書かれた部分)を選択して[Ctrl]+[C]
2) 5列目にペイスト
一番上の列見出し("E"と書かれた部分)を選択して[Ctrl]+[V]
3) 同様に3列目の「入力」を4列目にコピー&ペイスト
4) 4列目と5列目を選択
一番上の列見出しを2列分選択する("D"と"E")
5) メニュー[データ]→[並び替え]で「先頭行をデータの見出しとして利用する」にチェック。
「最優先するキー」を「入力」、「並び替えのキー」を「値」、「順序」を「昇順」に設定し
[OK]をクリック。
左の入力欄に該当する名前を右の名前欄にコピー
各ホールごとに上から順に入れたい
つまり、参考の表は、左端の行番号は無視して、左の2列と右の2列に分かれていて、
左の表は「先着順でホールの利用希望者名と利用希望のホール名」が書かれていて、
右の表は左の表から、先着順で、各ホールごとに、実際に利用可能な利用希望者名をリストしたい、
(表の例で言えば、各ホール一度に4名までは利用可能なので、ホール名が4つずつある)
という事ですね?
VBAを使って関数を定義するのが一番分かりやすいと思いますが、
それはきっと別の方が回答してくれると思いますので(笑)、
私は、ワークシート上の標準関数のみでやってみました。
こういう感じになります:
(使用バージョン Microsoft Excel 2003)
セルD2には
=IF(ISNUMBER(E2),INDEX($A$2:$A$13,E2),"")
セルE2には
=MATCH(C2,OFFSET($B$2:$B$13,IF(C2=C1,E1,0),0,ROWS($B$2:$B$13)-IF(C2=C1,E1,0)),0)+IF(C2=C1,E1,0)
という式が入っています。
D列とE列の残りの行は、D2:E2をそのまま下方向コピーした内容です。
ホール名は参考表のように、必ずひとかたまりになっている事を前提としています。
E列は中間結果の保持のために必要ですが、邪魔でしたら、列幅を0にするなどで隠せば良いでしょう。
ご覧の通り、あまりスマートではありません。スマートさでは、やはりVBAで関数を作成するのが一番いいですね。
大変な回答を有難う御座いました、
お陰でなんとか旨く出来ました。
今後とも宜しくお願い致します。
大変な回答を有難う御座いました、
お陰でなんとか旨く出来ました。
今後とも宜しくお願い致します。