[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『一覧表から条件に該当するデータを選んで、指定したセルへ貼り付ける』(Qoo)
@下記のような会議出席メンバーの一覧を作成し出欠の列に出欠の有無がわかるように入力します。
M N O P 1 出席メンバ 出欠 優先順位 2 01 Aさん 出 1 3 02 Bさん 欠 2 4 03 Cさん 出 3 5 04 Dさん 欠 4 6 03 Eさん 出 5 7 04 Fさん 欠 6
A上記の一覧表をもとに出席者は出席者氏名のセルにメンバーの名前を自動入力。
なお、貼り付けるセルの順番はB1→C1→D1→B2→C2→D2→B3→C3→D3としたいです。
欠席者は欠席者氏名のセルにメンバーの名前を自動入力。
こちらも貼り付けるセルの順番はB4→C4→D4→B5→C5→D5→B6→C6→D6としたいです。
※優先順位というのはAさんから順番に偉い人順に名簿を作成しているので記入してあります。出席者の偉い人順番で出席者氏名のところにデータを貼り付け。欠席者のところには欠席者の偉い人順番で貼り付けをしたいです。
下記はできあがりのイメージです。
A B C D 1 出席者氏名 Aさん Cさん Eさん 2 3 4 欠席者氏名 Bさん Dさん Fさん 5
出席者を抽出した結果の表と欠席者を抽出した表を別に作成して、それを元に貼り付けしたらいいのでしょうか?関数の知識があまりないのでその抽出結果の別表の作成もわかりません。
エクセル2000を使用しています。どなたか初心者でもわかるよい案がありましたら教えてください。
ご説明からすると、出席者数・欠席者数、それぞれ最大9名と云うことでいいのでしょうか?
数が多いと重くなることを懸念しなければならないのでお尋ねしております。
(半平太) 2011/01/20 22:57
お返事が遅くなってすいません。
出席者数は全員出席すると22名。欠席者数は過去の会議を見ると最大9名でした。
会議の出席メンバーは途中で増減するかもしれません。
ご検討よろしくお願い致します。
(Qoo)
もう一度 どなたか教えて頂けないでしょうか?
(Qoo) 2011/1/26 8:46
出席者の抽出欄は B1:D3 で9名分しかありませんが 後の人はどうするの?
>出席者数は全員出席すると22名
余り多くなさそうなので、ゴテゴテの式でも重くなると云うことはなさそうですね。
取りあえず、メンバーは最多48人までとします。
(1) A1セル =COUNTIF($N$2:$N$49,"出")
※これは出席者の数を計算するものです。 ただ、A1セルは「出席者氏名」と云う文字になっていないといけないので、以下の処置をしてください。 セルの書式(表示形式)をユーザー定義で "出席者氏名" と設定(ダブルクォーテーションを含む)
(2) A2セル =IF(CEILING(A$1,3)/3+1=ROW(),"欠席者氏名","")
※上式をA17セルまでフィルコピー
(3) B1セル =IF(COUNTIF($A$1:$A1,"欠席者氏名"),IF(COUNTIF($N$2:$N$49,"欠")<(ROW(A1)-CEILING($A$1,3)/3-1)*3+COLUMN(A1),"",INDEX($M$2:$M$49,SMALL(INDEX(($N$2:$N$49<>"欠")*50+$O$2:$O$49,0),(ROW(A1)-CEILING($A$1,3)/3-1)*3+COLUMN(A1)))),IF($A$1<(ROW(A1)-1)*3+COLUMN(A1),"",INDEX($M$2:$M$49,SMALL(INDEX(($N$2:$N$49<>"出")*50+$O$2:$O$49,0),(ROW(A1)-1)*3+COLUMN(A1)))))
※上式を右へ、下へフィルコピー(B1:D17の範囲に入れる)
<結果図> 行 _____A_____ ___B___ ___C___ ___D___ ____M____ __N__ ____O____ 1 (実体) 19 Aさん Dさん Eさん 出席メンバー 出欠 優先順位 2 Fさん memb7 memb9 Aさん 出 1 3 memb10 memb12 memb13 Bさん 欠 2 4 memb14 memb17 memb18 Cさん 欠 3 5 memb19 memb20 memb21 Dさん 出 4 6 memb23 memb24 memb26 Eさん 出 5 7 memb27 Fさん 出 6 8 欠席者氏名 Bさん Cさん memb11 memb7 出 7 9 memb15 memb16 memb25 memb8 未定 8 10 memb9 出 9 11 memb10 出 10 memb11 欠 11 memb12 出 12 : : : (半平太) 2011/01/26 11:51
返事が大変おそくなりましたことをお詫びします。教えて頂いた式を使用したら問題解決しました。
ですが…。その後レイアウトの変更などを求められ改良を考えましたができなくて困っています。
半平太さんに教えて頂いた関数を自分なりに調べましたが、理解できませんでした。
本当に申し訳ありません。
また助けて頂けないでしょうか?
変更1:出席メンバーというシートに前回のM列からO列のデータを作成し下記のようになっています。
行 A B C 1 出席メンバ 出欠 優先順位 2 Aさん 出 1 3 Bさん 欠 2 4 Cさん 欠 3 5 Dさん 出 4 6 Eさん 出 5 7 Fさん 出 6 8 memb7 出 7 9 memb8 未定 8 10 memb9 出 9 11 memb10 出 10 12 memb11 欠 11 13 memb12 出 12 : : : :
シートを分けることになった理由は途中で行の挿入をする場合があり、別シートにして出席者氏名と欠席者氏名を貼り付ける方がよいといわれたためです。
変更2:sheet1に出席者氏名&欠席者氏名を3列ではなく5列で表示されるように変更して欲しいということになりました。
下記は現在の状態です。
行 A B C D E F 1 出席者氏名 Aさん Dさん Eさん Fさん memb7 2 memb9 memb10 memb12 memb13 memb14 3 memb17 memb18 memb19 memb20 memb21 4 memb23 memb24 memb26 memb27 5 欠席者氏名 Bさん Cさん memb11 memb15 memb16 6 memb25
半平太さんに教えて頂いた式をもとに下記のようになっています。
・A1セル=COUNTIF(出席メンバー!$B$2:$B$59,"出")
・A2セル=IF(CEILING(A$1,5)/5+1=ROW(),"欠席者氏名","")→この式をA17セルまでフィルコピー
・B1セル=IF(COUNTIF($A$1:$A1,"欠席者氏名"),IF(COUNTIF(出席メンバー!$B$2:$B$49,"欠")<(ROW(A1)-CEILING($A$1,5)/5-1)*5+COLUMN(A1),"",INDEX(出席メンバー!$A$2:$A$49,SMALL(INDEX((出席メンバー!$B$2:$B$49<>"欠")*50+出席メンバー!$C$2:$C$49,0),(ROW(A1)-CEILING($A$1,5)/5-1)*5+COLUMN(A1)))),IF($A$1<(ROW(A1)-1)*5+COLUMN(A1),"",INDEX(出席メンバー!$A$2:$A$49,SMALL(INDEX((出席メンバー!$B$2:$B$49<>"出")*50+出席メンバー!$C$2:$C$49,0),(ROW(A1)-1)*5+COLUMN(A1)))))
これをさらに改良して下記のようにしたいのですができなくて困っております。
行 A B C D E F G H 1 空白 空白 空白 空白 空白 空白 空白 空白 2 : : : : : : : : 3 4 5 6 7 8 空白 空白 出席者氏名 Aさん Dさん Eさん Fさん memb7 9 memb9 memb10 memb12 memb13 memb14 10 memb17 memb18 memb19 memb20 memb21 11 memb23 memb24 memb26 memb27 12 欠席者氏名 Bさん Cさん memb11 memb15 memb16 13 memb25 14 : : :
実はsheet1は議事録になっていてその中に出席者氏名&欠席者氏名が入力されるようしたい要望がきました。すべて記入すると大変なので省略してあります。
半平太さんの式のA2セル =IF(CEILING(A$1,3)/3+1=ROW(),"欠席者氏名",""
→これは欠席者氏名が記入されるA1の列は余り1の場所と考えられるから
という解釈でよろしいでしょうか?
式の意味が全体的に理解できないのですが、特に
(ROW(A1)-CEILING($A$1,3)/3-1)*3+COLUMN(A1)
の「/3-1)*3+COLUMN」や
,"",INDEX($M$2:$M$49,SMALL(INDEX(($N$2:$N$49<>"欠")*50+$O$2:$O$49
「*50+$O$2:$O$49」の部分が理解できません。
式の解釈も含めお助けください。お願い致しますm(__)m
P.S.関数知識がないのと、ネットをいつでも見れる環境ではないためまた返事が遅くなるかもしれません。
これって、たとえば出席者が10名しか居ない様な時は 10,11行目は表示が無くて2行空きがあった後 12行目から 欠席者の名前が並べば良いのでしょうか?
(HANA)
でも直接抽出結果をSheet1に反映させるのは難しそうなので、出席者と欠席者の
抽出する場所を別に作成しそれをSheet1へひっぱるやり方にしようかと思っています。
現在考えている案
@出席メンバーというシートに出席者抽出する場所(F1〜J5)と欠席者抽出する場所(F7〜J9)を作成。
※出席メンバーの人数は途中で増えても25名ぐらいまでとのことなので抽出するセルは25名分のみ作成。
また欠席者が半数以上の場合会議は延期になると思うので欠席者の抽出するセルは15名分で作成。
下記は出席メンバーのシートのイメージです。
行 A B C D E F G H I J 1 事務局 Aさん 2 3 出席メンバ 出欠 優先順位 空白 出席者氏名 m1 m4 m5 m6 m7 4 m1 出 1 : (E3〜E7は m9 m10 m12 m13 m14 5 m2 欠 2 : 結合です) m17 m18 m19 m20 m21 6 m3 欠 3 : m23 m24 空白 空白 空白 7 m4 出 4 : 空白 空白 : : : 8 m5 出 5 : 空白 : : : : 9 m6 出 6 : 欠席者氏名 m2 m3 m8 m11 m15 10 m7 出 7 : (E9〜E11は m16 m22 m25 空白 空白 11 m8 欠 8 : 結合です) 空白 空白 空白 : : 12 m9 出 9 : : : : : : 13 m10 出 10 : : : : : : 14 m11 欠 11 15 m12 出 12 16 : : :
A出席者メンバーのシートの抽出結果をsheet1へひっぱる。
下記はsheet1のできあがりイメージです。
行 A B C D E F G H 1 空白 空白 空白 空白 空白 空白 空白 空白 2〜7省略 8 : : 出席者氏名 =出席メンバ!F3 =出席メンバ!G3 =出席メンバ!H3 =出席メンバ!I3 =出席メンバ!J3 (m1を表示) (m4を表示) (m5を表示) (m6を表示) (m7を表示) 9〜10省略 11 m23 m24 空白 空白 空白 12 空白 空白 空白 空白 空白 →この行が空白=出席者氏名なしの場合は後で行を削除。 13 欠席者氏名 =出席メンバ!F9 =出席メンバ!G9 =出席メンバ!H9 =出席メンバ!I9 =出席メンバ!J9 14
前回同様sheet1は議事録でその中に出席者氏名&欠席者氏名があり優先順位の順番で入力されるようにしたいです。
12行目同様15行目がすべて空白(欠席者氏名なし)の場合は議事録作成後行を削除します。
最大25名と言う事ですが、切りがよいので 4〜30(27名) の範囲での数式にしてあります。
出席メンバーシートのD列を作業列に使用します。
D3に=CEILING(COUNTIF($B$4:$B$30,"出")-1,5)+5
D4に=IF(B4="","",COUNTIF($B$4:B4,B4)+$D$3*(B4="欠")) →D30までフィルドラッグ。
Sheet1の
C8 に 出席者氏名 と入力 C9 に =IF(ROW(A1)=INT(出席メンバー!$D$3/5),"欠席者氏名","") →C14までフィルドラッグ
D8 に =IF(COUNTIF(出席メンバー!$D$4:$D$30,COLUMN(A1)+(ROW(A1)-1)*5),INDEX(出席メンバー!$A$4:$A$30,MATCH(COLUMN(A1)+(ROW(A1)-1)*5,出席メンバー!$D$4:$D$30,0)),"") →G14までフィルドラッグ
です。
D8:G14セルには 条件付書式の設定で 数式が ▼ =D8<>"" 書式:罫線(外枠) を設定しておくと良いかもしれません。
(HANA)
大変お返事が送れてすいません。HANAさんのおかげて完成し、実際に使用する人も喜んでくれました。ありがとうございました。
要望がもう1点でてきたのでまた教えて頂けないでしょうか?
条件付書式でC9〜C15の範囲で欠席者氏名が表示されたセルの上段のA〜Cの部分に罫線を引くということはできますか?
例えばC14=出席者氏名だった場合、A14〜C14の上段に罫線をつけたいのですが…。
それから、教えて頂いた関数の意味(解釈)がなんとなくわかるところとそうでないところがあるので教えてください。
@〜Cでまとめてみましたので解説お願い致します。
@D3=CEILING(COUNTIF($B$4:$B$30,"出")-1,5)+5
私の解釈
COUNTIFでB4〜B30の範囲で出の数が何個あるか数える
→COUNTIFで求めた数値をCEILINGで5の倍数にして一番近い値に数値を切り上げ
→切り上げた値に+5をする。
「COUNTIF($B$4:$B$30,"出")-1」のところの-1をどうしてするのでしょうか?
出席者が22名・欠席者が5名だった場合D3=30になりますが、-1の部分を消しても同じようにD3=30になりました。
わからないので解説お願いします。
AD4=IF(B4="","",COUNTIF($B$4:B4,B4)+$D$3*(B4="欠"))
私の解釈
もしB4が空白なら空白を表示、そうでないならB4から始まる条件にあった数を数える
→条件にあった数を数えた値+D3で求めた値*B4から始まる欠の数
この解釈であっているとしたらB4〜B25までは出でB26〜B30までが欠とした場合のD25とD26の値は下記の流れで答えがでると思うのですがあっているでしょうか?
D25=IF(B25="","",COUNTIF($B$4:B25,B25)+$D$3*(B25="欠"))なのでB4〜B25の範囲で欠の数は0
→D3=30なので30*0=0→B4〜B25の範囲で出の数=22→22+0=22→この結果D25=22となる。
D26=IF(B26="","",COUNTIF($B$4:B26,B26)+$D$3*(B26="欠"))なのでB4〜B26の範囲で欠の数は1
→D30=30なので30*1=30→B4〜B26の範囲で欠の数=1→30+1=31→この結果D26=31となる。
Bsheet1のC9=IF(ROW(A1)=INT(出席メンバー!$D$3/5),"欠席者氏名","")
私の解釈
C9を1行目と考え、1行目が出席メンバのシートのD3割る5の値と同じなら欠席者氏名を表示、そうでないなら空白を表示する。
Csheet1のD8=IF(COUNTIF(出席メンバー!$D$4:$D$30,COLUMN(A1)+(ROW(A1)-1)*5),INDEX(出席メンバー!$A$4:$A$30,MATCH(COLUMN(A1)+(ROW(A1)-1)*5,出席メンバー!$D$4:$D$30,0)),"")
これは色々な関数がネストされているので正直なにがなんだか理解できませんでしたm(__)m
全面的に解説お願いしたいです。(特にINDEX関数とMATCH関数がわかりません)
(COUNTIF(出席メンバー!$D$4:$D$30,COLUMN(A1)+(ROW(A1)-1)*5),→論理式の部分?
INDEX(出席メンバー!$A$4:$A$30,MATCH(COLUMN(A1)+(ROW(A1)-1)*5,出席メンバー!$D$4:$D$30,0)),→IFの真の部分?
"")→IFの偽の部分?
またお返事いただけるとうれしいです。よろしくお願い致します。
(Qoo 2011/3/23 14:23)
◆条件付き書式 C8:H16を選択して 数式が =$C9<>"" 下罫線 を設定してください。
◆1. >D3=CEILING(COUNTIF($B$4:$B$30,"出")-1,5)+5 >「COUNTIF($B$4:$B$30,"出")-1」のところの-1をどうしてするのでしょうか? 数式が間違っていました。「-1」をのけて下さい。 違う関数で丸めを行っていた時の消し忘れでした。 CEILING関数を使う事にしたので、「-1」は不要でした。
◆2. >D4=IF(B4="","",COUNTIF($B$4:B4,B4)+$D$3*(B4="欠")) >条件にあった数を数えた値+D3で求めた値*B4から始まる欠の数 最後の所が違います。 ~~~~~~~~~~~~~~~~~~ 掛け算しているのは (B4="欠") B列の文字は「欠」かどうか? です。 "欠"だったら、TRUE、それ以外なら FALSE が返されます。 そして、演算した場合 TRUE=1 , FALSE=0 として扱われるので +$D$3*(B4="欠") この部分は +IF(B4="欠",$D$3,0) と言うIF関数が書いてあるのと同じです。
欠だった場合 → TRUE なので、D3*1 = D3 欠でなかった場合 → FALSEなので、D3*0 = 0
◆3. それであっています。
◆4. 分解する部分はあっています。 COLUMN(A1)+(ROW(A1)-1)*5 を取り出して、セルに入力し計算結果を確認してください。
それと、こちらも出来るだけ時間を作っているので >返事が大変遅れましてすいません。 なんて書かなくても良い様にしていただきたいと思います。 しかも、ご自身は「更新されてなかったみたいなので・・・」と回答を催促するのに?
>ありがとうございました。要望がもう1点でてきたのでまた教えて頂けないでしょうか? も、「何だ?困ったから質問に来たついでに お礼を言ってるのか?」と思いますよ。
しばらく経って忘れたころに「そういえば、○○ってどういう仕組み?」と聞かれたら その質問なら、もっと早く(まだ覚えているうちに)してくれればいいのに。 もう一回 一から思い出さないと分からないよ。。。 って成りません? まぁ、今回この状況だったのですが。 (しかも、すぐならテスト用のファイルがのけてあるのですが、 それも無かったので 再作成しました。)
(HANA)
お返事ありがとうございます。よくないところなどの細やかなご指摘もうれしかったです。
ご指摘頂いた部分について下記のように→の後に自分感じたじたことを記入しました。
(HANAさんが細やかに記入してくれたので自分もそれをまねてみました。
感じたことをだらだら記入するよりいいような気がしたので…)
>それと、こちらも出来るだけ時間を作っているので
→貴重なお時間をさいて頂きありがとうございます。
>返事が大変遅れましてすいません。なんて書かなくても良い様にしていただきたいと思います。 >しかも、ご自身は「更新されてなかったみたいなので・・・」と回答を催促するのに?
→大変失礼いたしました。自分勝手でマナーがなってないことを深く反省しております。
>ありがとうございました。要望がもう1点でてきたのでまた教えて頂けないでしょうか? >も、「何だ?困ったから質問に来たついでに お礼を言ってるのか?」と思いますよ。
→おっしゃる通りです。これでは誠意がなくお礼を言われてもうれしくないですね。以後気をつけます。
>しばらく経って忘れたころに「そういえば、○○ってどういう仕組み?」と聞かれたら >その質問なら、もっと早く(まだ覚えているうちに)してくれればいいのに。 >もう一回 一から思い出さないと分からないよ。。。って成りません?
→なりますね。もう一度思い出すという無駄な作業をさせてすいません。
>まぁ、今回この状況だったのですが。 >(しかも、すぐならテスト用のファイルがのけてあるのですが、それも無かったので 再作成しました。)
→再作成の手間まで取らせてすいません。普通ならここまでしてくれないですね。
思い出す作業ならびに再作成までして回答を頂きありがとうございます。
HANAさんのご指摘を肝に銘じ、回答を下さる方失礼のないように気をつけます。
「全部理解できました。」という報告も一緒にしたかったのですが、「◆4.」の部分はまだ理解できずにいますm(__)m
COLUMN(A1)+(ROW(A1)-1)*5 =1やCOLUMN(B1)+(ROW(B1)-1)*5=2と計算が結果を確認しました。
COUNTIF(出席メンバー!$D$4:$D$30,COLUMN(A1)+(ROW(A1)-1)*5
→解釈:COUNTIFを使用して出席メンバーシートのD4:D30の範囲で検索条件を指定。
MATCH(COLUMN(A1)+(ROW(A1)-1)*5,出席メンバー!$D$4:$D$30,0))
→解釈:COLUMN(A1)+(ROW(A1)-1)*5の部分=MACHの検索値 出席メンバー!$D$4:$D$30の部分=MATCHの範囲 0=MATCHの照合方法=検索値と完全一致
INDEX(出席メンバー!$A$4:$A$30,MATCH(COLUMN(A1)+(ROW(A1)-1)*5,出席メンバー!$D$4:$D$30,0))
→解釈:出席メンバー!$A$4:$A$30=INDEXの範囲 MATCH(COLUMN(A1)+(ROW(A1)-1)*5,出席メンバー!$D$4:$D$30,0=INDEXの行位置
式を分解して考えている段階ですが、INDEXの列位置がないとどうなるのかなど
まだ理解できていないです。じっくり考えて理解できるよう頑張ります。
ありがとうございました。
(Qoo 2011/3/25 1:15)
相手が見えないので、なかなか難しい所も有りますが。。。
さて、4番の問題は 少し難しい方の部類に入ると思います。
>COLUMN(A1)+(ROW(A1)-1)*5 =1やCOLUMN(B1)+(ROW(B1)-1)*5=2と計算が結果を確認しました。 実際に数式が入っている範囲に置き換えると [A] ・・・・ [D] [E] [F] [G] [H] [1] : [8] 1 2 3 4 5 [9] 6 7 8 9 10 [10] 11 12 13 14 15 [11] 16 17 18 19 20 [12] 21 22 23 24 25 [13] 26 27 28 29 30 [14] 31 32 33 34 35 この様に、数字が連番に成ります。
現在の問題から少し離れて 簡単な例を書いてみますので 確認してみて下さい。 [A] [B] [C] [D] [E] [F] [G] [H] [1] 事務局 Aさん [2] 出席者 [3] 氏名 出欠 優先順位 作業列 番号 INDEX-No 氏名 [4] m1 出 1 1 1 m1 [5] m2 2 4 m4 [6] m3 3 5 m5 [7] m4 出 2 4 7 m7 [8] m5 出 3 ↑ ↑ ↑=IF(F4="","",INDEX($A$4:$A$10,G4)) [9] m6 | |=IF(F4="","",MATCH(F4,$D$4:$D$10,0)) [10] m7 出 4 |=IF(COUNTIF($D$4:$D$10,ROW(A1)),ROW(A1),"") ↑=IF(B4="","",COUNTIF($B$4:B4,B4))
A3:B10の範囲から「出」の人の名前をH列に上から詰めて表示する事を考えます。
D列では、「出」と成っているその行が 上から数えて何番目の「出」の行なのかカウントします。 F列では、D列に番号が有るか確認しながら 番号を埋めていきます。 G列では、F列の番号が D列の何番目に出てくるのか取得します。 H列で 、A列の範囲のG列の番号目の名前を取り出します。
なお、実際の式では F列の役割をしているのが「COLUMN(A1)+(ROW(A1)-1)*5」 の部分に成ります。
例えば、H4の式 =IF(F4="","",INDEX($A$4:$A$10,G4)) は G4セルを参照している所が有りますが G4セルには「=IF(F4="","",MATCH(F4,$D$4:$D$10,0))」の式が入っているので 該当部分を差替ます。 ~~~~~~~~~~~~~~~~~~~~~~ここがG4の戻り値 =IF(F4="","",INDEX($A$4:$A$10,MATCH(F4,$D$4:$D$10,0))) ~~~~~~~~~~~~~~~~~~~~~~ここが置き換わる。 こんな感じで3つのセルに分かれている式を一つに纏めると =IF(COUNTIF($D$4:$D$10,ROW(A1)),INDEX($A$4:$A$10,MATCH(ROW(A1),$D$4:$D$10,0),),"") この様になります。
実際の式が =IF(COUNTIF(出席メンバー!$D$4:$D$30,COLUMN(A1)+(ROW(A1)-1)*5),INDEX(出席メンバー!$A$4:$A$30,MATCH(COLUMN(A1)+(ROW(A1)-1)*5,出席メンバー!$D$4:$D$30,0)),"") で、簡単な例として作った式の ROW(A1)の所と「COLUMN(A1)+(ROW(A1)-1)*5」が対応するので、単純に置き換えると =IF(COUNTIF($D$4:$D$10,COLUMN(A1)+(ROW(A1)-1)*5),INDEX($A$4:$A$10,MATCH(COLUMN(A1)+(ROW(A1)-1)*5,$D$4:$D$10,0),),"") 式がだいぶ似てくると思います。
一つずつ、消化していってみて下さい。
(HANA)
4番部分のさらなる解説ありがとうございます。
お返事を読んですぐの今の段階では
>現在の問題から少し離れて
>簡単な例を書いてみますので 確認してみて下さい。
のあたりから消化不良を起こしてます(-_-;)
時間をかけて一つずつ消化します!!
(Qoo 2011/3/26 0:08
)
*ヾ(`・ω・´*ヾ) がんばって!!
そうそう、消化不良の所申し訳ありませんが この掲示板の使い方です。
文章の先頭に半角スペースを入れると 空行を挟まなくても(改行を二つ入れなくても) 改行して表示される様に成ります。 _←ここの半角アンダーバーが入っている部分に ←半角スペースです。
ここから先は、時間をかけないと仕様が無いと思うので p(*゚▽゚*)q ファイト!!
躓いている所が説明出来る様になったら 気軽に書き込んでみて下さい。
(HANA)
掲示板の使い方の指導ありがとうございます。
Wikiに書き込む場合の整形ルールは最初に目を通していたのに忘れてました。 (管理人さんごめんなさい)
掲示板へに書き込みは慣れも必要だと思うのですが、きれいにかつ早く書き込むコツとかあるでしょうか? 関数の意味をすぐ理解できない&入力するのが遅いので、メモ帳に質問事項やファイル内容を少しずつ作成→ 全部記入が終了したら掲示板のコメント欄に貼り付けという流れでやってます、 メモ帳できれいにできてたと思って、コメントに貼り付けするしコメント・プレビューをみるとレイアウトが悲しいことに(T_T) 情けないのですが、コメント欄に貼り付けてからの修正だけで3時間近くかかってしまったこても… 最近になってTabキー使用すればいいのかな?と気づいてみたり。
HANAさんが回答してくれた下記の記入の仕方なのですが
>=IF(F4="","",INDEX($A$4:$A$10,MATCH(F4,$D$4:$D$10,0))) ~~~~~~~~~~~~~~~~~~~~~~ここが置き換わる。
自分でやると強調したい~~~の部分がずれました(-_-;)
さて、現在もつまずいているところを考えてます。(最初の段階より消化は進んでいると思うのですが…)
説明できるようになるまで、まだ時間がかかりそうですm(__)m もう少し考えをまとめてから再度書き込みをしたいと思います。
ちなみに、もしテスト用ファイルまだお持ちでしたら捨てずに置くことできますでしょうか?
(Qoo 2011/3/29 12:44)
テスト用ファイル、しっかり保存してますよ!! ご安心下さい。
>きれいにかつ早く書き込むコツとかあるでしょうか? そうですねぇ。。。テキスト(文章)に関しては 私は必ず 先頭に半角スペースを入れる事にしてますが。。。
面倒なら、実際は 書き出しの先頭だけで良いのですよ? ↑1行目に半角スペースが入っているので 2行目からは、先頭から詰めて書いても 改行される。 ↑ここにスペースを一つ入れると、一続きの章とみなされて 先頭に半角スペースが不要に成る。
>自分でやると強調したい~~~の部分がずれました(-_-;) たぶんこれは、片方は半角スペースで始まっていて 片方は半角スペースで始まって居なかったのではないでしょうか。
半角スペースで始まらない部分は 文字が少し大きいですよね? (Mac だと、文字の大きさの違いは あまり無い様ですが。)
表に関しては、エクセルで作製して 貼り付けて居ます。 その時に、一つのセルの文字数が全角4文字より多くなると レイアウトが崩れてしまうので、なるべく4文字以内に納める。 納まらない場合は、その列は全て 後にスペースを追加してます。
[A] [B] [C] [1] 一二三四 ABCDEFG 1 [2] 五六七八 HIJ 2
B1の所が5文字以上で、どうしても減らせない場合
[A] [B]___________ [C] [1] 一二三四 ABCDEFG 1 [2] 五六七八 HIJ________ 2
「_(実際は半角スペース)」を入れて、文字数を調整。 目検&手作業ではなく、使い捨ての数式でやってますが。。。
因みに、[A]の左側([1]の上)には、半角スペースを入れてあります。 ↓ここに半角スペース。(Sheet1と言う文字が無くても。) Sheet1 [A] [B] [C] [1] 一二三四 ABCDEFG 1 [2] 五六七八 HIJ 2
レイアウトが混み入っている時は エクセルをスペース区切り(.prn)で保存して メモ帳で開いて コピペしてます。
>コメント欄に貼り付けてからの修正 これが、表の修正でしたら、元の表をどの様に作ったかにもよりますが 難しかったと思います。
Tab区切りが入っていると、どこに入っているのか見えないですからね。。。 一旦全部 Tabを除いて スペースで調整する事にするか 表部分だけ 再度エクセルで作り直すのが早いと思います。
ある行はTab区切りで出来ていて ある行はスペースで調整 と言った表は、こちらに表示されている時は 勿論似せて有るので変わりないのですが 後で使いづらいです。
例えば [A] [B] [C] [1] 一二三四 ABCDEFG 1 [2] 五六七八 HIJ 2 ↑の表は、これまで載せた表と見た目はあまり変わりませんが コピーして、エクセルに 形式を選択して貼り付け→テキスト として貼り付けた時、結果に違いが出ます。
(HANA)
>テスト用ファイル、しっかり保存してますよ!! >ご安心下さい。 →ありがとうございます!!
>たぶんこれは、片方は半角スペースで始まっていて片方は半角スペースで始まって居なかったのではないでしょうか。 →なってました。両方半角にしたら多少の微調整は必要でしたが、思うようにできました!
>半角スペースで始まらない部分は 文字が少し大きいですよね? →なんで大きくなるのかなぞが解けました。
>表に関しては、エクセルで作製して 貼り付けて居ます。 →こんなわざがあるんですね。知らなかったです。
>これが、表の修正でしたら、元の表をどの様に作ったかにもよりますが >難しかったと思います。 →表を必至で修正してました。表をつけないと質問事項のイメージも伝わらないから(^_^;)
すごく勉強になりました。ありがとうございます。
さて、つまずいているところですがなんとか考えがまとまりました。説明が長いですが、おつきあいお願いします。 表現が下手なので意味が伝わるかちょっと心配ですが…
まずCOLUMN(A1)+(ROW(A1)-1)*5=1+(1-1)*5=1 COLUMN(B1)+(ROW(B1)-1)*5=2と実際に連番になっているところですが、 これは出席者氏名と欠席者氏名を貼り付けるD8=出席メンバーの1番目に名前が入る人の場所、E8=出席メンバーの2番目に名前が入る人の場所 というふうにセル位置を示す(返している)と解釈しました。
>現在の問題から少し離れて簡単な例を書いてみますので 確認してみて下さい。 というところの各式の解釈です。
=IF(COUNTIF($D$4:$D$10,ROW(A1)),ROW(A1),"") →解釈:もしD4〜D10の範囲でROW(A1)の個数を数え、ROW(A1)=1は1を表示(1を返す)。そうでないないら何も表示しない。
=IF(F4="","",MATCH(F4,$D$4:$D$10,0)) →解釈:もしF4が空白なら空白を、空白でないならD4〜D10の範囲でF4と完全一致するものを表示。
=IF(F4="","",INDEX($A$4:$A$10,G4)) →解釈:もしF4が空白なら空白をそうでないなら(INDEX関数を使用して)A4〜A10の範囲でG4の値を返す(表示する)。
問題の4番=IF(COUNTIF(出席メンバー!$D$4:$D$30,COLUMN(A1)+(ROW(A1)-1)*5),INDEX(出席メンバー!$A$4:$A$30,MATCH(COLUMN(A1)+(ROW(A1)-1)*5,出席メンバー!$D$4:$D$30,0)),"")ですが、 下記の感じで解釈しました。
論理式の部分 (COUNTIF(出席メンバー!$D$4:$D$30,COLUMN(A1)+(ROW(A1)-1)*5), →解釈:もし出席メンバーシートのD4〜D30の範囲で検索条件結果の数値を数えたとき =COLUMN(A1)+(ROW(A1)-1)*5=1という結果を数えたとき
IFの真の部分 INDEX(出席メンバー!$A$4:$A$30,MATCH(COLUMN(A1)+(ROW(A1)-1)*5,出席メンバー!$D$4:$D$30,0)), まず式を分解してMATCH(COLUMN(A1)+(ROW(A1)-1)*5,出席メンバー!$D$4:$D$30,0)部分 →出席メンバーシートのD4〜D30の範囲でCOLUMN(A1)+(ROW(A1)-1)*5=1の検索値と完全一致するものを返す=今回の答えは1 この結果を踏まえて解釈すると =出席メンバーシートのA4〜A30の範囲で行番号=1のセルの内容を返す=今回はm1を表示する
IFの偽の部分 "") →解釈:そうでないなら空白を表示しなさい
INDEX関数が理解できずネットでいろいろ調べました。INDEX関数の書式はセル範囲形式と配列形式があると思うのですが、その見極めがよくわかりません。
セル範囲形式=INDEX(範囲,行番号,列番号,領域番号) 配列形式=INDEX(配列,行番号,列番号) 今回のHANAさんが教えてくれたのは範囲形式でセルの範囲が1つなので領域番号は省略されていると解釈したのですが… 見極めるときのポイントはありますか?
HANAさんが載せてくれた簡単な例で数式をいろいろいじって確認していたのですが、理解できていないところがあるのでテストデータの保管引き続きお願いしたいのですが…。 一度にたくさんのことを教えていただいてもすぐに消化できないと思うので、また後日書き込みをしたいと思います。
(Qoo 2011/4/02 01:07)
ファイルの件、Qooさんの「分かりましたっっ!!」って書込が有るまでは のけておきますので、ご心配なく。
全体的に、それで合っていると思います。
>INDEX関数の書式はセル範囲形式と配列形式があると思うのですが、その見極めがよくわかりません。 えっと。。。どうなんでしょうか。 私は、範囲が一つしかない場合は 「配列形式=INDEX(配列,行番号,列番号)」の方を使っていると思っていますが 今回の場合 配 列 :出席メンバー!$A$4:$A$30 行番号 :MATCH(COLUMN(A1)+(ROW(A1)-1)*5,出席メンバー!$D$4:$D$30,0) 列番号 :省略
でも、もしかしたら Qooさんの仰って居られる様に 「セル範囲形式」で、列番号と領域番号が 省略されているのかもしれませんね? もしかすると 範 囲 :出席メンバー!$A$4:$A$30 行番号 :MATCH(COLUMN(A1)+(ROW(A1)-1)*5,出席メンバー!$D$4:$D$30,0) 列番号 :省略 領域番号:省略
ヘルプで確認すると、例えばこんな違いがある様ですが。。。 [A] [B] [C] [D] [E] [1] 1 6 書式1 11 ←{=SUM(INDEX(A1:B5,3,0))} ★Ctrl + Shift + Enter で確定 [2] 2 7 書式2 11 ←=SUM(INDEX(A1:B5,3,0,1)) ☆Enter で確定 [3] 3 8 ←ここの合計(3+8=11)を求める [4] 4 9 [5] 5 10
実際の所、私は 範囲が複数有る時以外は 二つの違いを意識して使用した事は有りません。 正確な所が分からなくて ごめんなさい。
(HANA)
書き込みに時間がかなりあきました。すいません。
>ファイルの件、Qooさんの「分かりましたっっ!!」って書込が有るまではのけておきますので、ご心配なく。 →ありがとうございます。
>全体的に、それで合っていると思います。 →よかった。この解釈にたどりつくまでに何度も投げ出しそうになりました(>_<) 頑張ってよかったです。
>実際の所、私は 範囲が複数有る時以外は二つの違いを意識して使用した事は有りません。 >正確な所が分からなくて ごめんなさい。 →HANAさんほどの達人でも分からないことがあるのですね。 こんな言い方は変ですが、達人でもわからないことがあるのだなと思いちょっとほっとしました。 意識しないで使用できるのが、羨ましいです。私はどうも頭が固くて(-_-;)
まだ理解できないところなのですが、以前HANAさんが簡単な例で記入してくださった部分を実際使用する状態 に近づけて試してみました。(10行目までではなく30行目まで数式を延長してみたつもりです) 例えば下記の状態の時は"欠"の出席者番号・INDEX-No・氏名が表示されません。
[A] [B] [C] [D] [E] [F] [G] [H] [1] 事務局 Aさん [2] 出席者 [3] 氏名 出欠 優先順位 30 番号 INDEX-No 氏名 [4] m1 出 1 1 2 4 m4 [5] m2 2 3 5 m5 [6] m3 3 4 7 m7 [7] m4 出 4 2 5 8 m8 [8] m5 出 5 3 6 9 m9 [9] m6 6 7 10 m10 [10] m7 出 7 4 8 11 m11 [11] m8 出 8 5 9 12 m12 [12] m9 出 9 6 10 13 m13 [13] m10 出 10 7 11 14 m14 [14] m11 出 11 8 12 15 m15 [15] m12 出 12 9 13 16 m16 [16] m13 出 13 10 14 17 m17 [17] m14 出 14 11 15 18 m18 [18] m15 出 15 12 16 19 m19 [19] m16 出 16 13 17 20 m20 [20] m17 出 17 14 18 21 m21 [21] m18 出 18 15 19 22 m22 [22] m19 出 19 16 20 23 m23 [23] m20 出 20 17 21 24 m24 [24] m21 出 21 18 22 25 m25 [25] m22 出 22 19 [26] m23 出 23 20 [27] m24 出 24 21 [28] m25 出 25 22 [29] m26 欠 26 31 [30] m27 欠 27 32
しかし下記の状態の時は、3名だけ"欠"の出席者番号・INDEX-No・氏名が表示されます。 そしてこの状態は"欠"が3だと何も表示されず、"欠"が4以上になっても"欠"の出席者番号・INDEX-No・氏名の表示はかわりません。
[A] [B] [C] [D] [E] [F] [G] [H] [1] 事務局 Aさん [2] 出席者 [3] 氏名 出欠 優先順位 25 番号 INDEX-No 氏名 [4] m1 出 1 1 2 4 m4 [5] m2 2 3 5 m5 [6] m3 3 4 7 m7 [7] m4 出 4 2 5 8 m8 [8] m5 出 5 3 6 9 m9 [9] m6 6 7 10 m10 [10] m7 出 7 4 8 11 m11 [11] m8 出 8 5 9 12 m12 [12] m9 出 9 6 10 13 m13 [13] m10 出 10 7 11 14 m14 [14] m11 出 11 8 12 15 m15 [15] m12 出 12 9 13 16 m16 [16] m13 出 13 10 14 17 m17 [17] m14 出 14 11 15 18 m18 [18] m15 出 15 12 16 19 m19 [19] m16 出 16 13 17 20 m20 [20] m17 出 17 14 18 21 m21 [21] m18 出 18 15 19 22 m22 [22] m19 出 19 16 20 23 m23 [23] m20 出 20 17 [24] m21 出 21 18 [25] m22 出 22 19 [26] m23 出 23 20 [27] m24 欠 24 26 [28] m25 欠 25 27 26 24 m24 [29] m26 欠 26 28 27 25 m25 [30] m27 欠 27 29 28 26 m26
なぜこのような現象になるのか理解できずにいます。 ちなみにE3=CEILING(COUNTIF($B$4:$B$30,"出"),5)+5となっております。
(Qoo 2011/4/07 01:00)
疑問を解決するのに、良い二つの例を挙げて下さったと思います。
下側に載せて下さった表から先に確認しますが。。。
F:H列の 23:27行目は何も表示が有りません。
この表示がない部分は、小さな例で書くと <1> <2> <3> <4> <5> <6> [1] 出席者氏名 m1 m2 m3 空き 空き [2] 空き 空き 空き 空き 空き [3] 欠席者氏名 m4 m5
例えば出席者が 3人だった場合、最後の2セルと 次の行の5セルを「空き」にするために有ります。
([1],<2>)のセルが「1」 ([1],<3>)のセルが「2」 ([1],<4>)のセルが「3」・・・・ と数えて言った場合、「4〜10」のセルは 空き で 欠席者氏名は、「11」のセルから始まります。
全メンバーが5人だったと仮定して・・・ [A] [B] [C] [D] [E] [F] [G] [H] [1] 事務局 Aさん [2] 出席者 [3] 氏名 出欠 優先順位 10 番号 INDEX-No 氏名 [4] m1 出 1 1 1 1 m1 [5] m2 出 2 2 2 2 m2 [6] m3 出 3 3 3 3 m3 [7] m4 欠 4 11 ←[1]<5>用 空き [8] m5 欠 5 12 ←[1]<6>用 空き [9] ←[2]<2>用 空き [10] ←[2]<3>用 空き [11] ←[2]<4>用 空き [12] ←[2]<5>用 空き [13] ←[2]<6>用 空き [14] 11 4 m4 [15] 12 5 m5 [16] [17] [18] F列の「番号」が、 >([1],<2>)のセルが「1」 ([1],<3>)のセルが「2」 ([1],<4>)のセルが「3」・・・・ と数えて行ったときの番号で、欠番は欠番として占有させています。 (実際の表で、その番号のセルは 空き にする必要があるので。)
欠番は除いて、番号だけを確認しているのがD列に成ります。
上側に載せて下さった表に戻ってみると。。。
欠席の二人の番号(D列)を見ると、31と32です。 そして、F:Hの式を30行目までしかコピーして居なかった場合 30行目は「28」を表示する行なので、「30〜32」の番号に関しては 確認が行われていない事に成ります。
余裕を持って、+10行分くらい多めにフィルドラッグしてみて下さい。 最初に載せた簡単な例では、「出」の人だけ考えていて 間に空きセルを挟むこともなく、元のデータ数を超える事が無かったので (寧ろ、必ず元のデータ数より少なくなる だったので) 元のデータ数と同じ行数 フィルドラッグするだけで良かったのですが。。。
ちなみに、載せて下さった表では、F列の先頭が「2」から始まって居ますが その点は大丈夫ですか? こちらに貼り付ける表を作る段階でずれただけなら良いですが。
あ、関数は 結構適当に使ってます。(;^ω^A いや、基本的に色々な事は 適当にやってしまって居るので 達人になる迄の道のりは まだまだ険しいです。
(HANA)
これは範囲であって、配列ではないと思います。 ↓ >配 列 :出席メンバー!$A$4:$A$30
> 実際の所、私は 範囲が複数有る時以外は > 二つの違いを意識して使用した事は有りません。 通常、値だけしか操作しないので、違いを意識することはないですが、 範囲は、オブジェクトであり、全属性を操作できます。
例: =CELL("address",INDEX(A4:A30,3))
※ 第2引数に配列を入れたら、こんな数式は成り立たないです。
(半平太) 2011/04/07 20:29
>これは範囲であって、配列ではないと思います。 > ↓ >配 列 :出席メンバー!$A$4:$A$30
その「配列」と言うのは 「配列形式=INDEX(配列,行番号,列番号)」の数式の場合の 一番目の引数 と言う意味で「配列」と言う文字を取り出したものですが。。。?
この場合のヘルプには ・配列 必ず指定します。セル範囲または配列定数を指定します。 と書いてあるので、指定したのは「セル範囲」ですよね?
>例: =CELL("address",INDEX(A4:A30,3)) この例では、セルの値ではなくセルの参照が返されているので 「セル範囲形式=INDEX(範囲,行番号,列番号,領域番号)」 の方かとは思いますが。。。?
(HANA)
あれー、すみません。私、勘違いしたみたいです。m(__)m ↓ 配列形式は「行番号と列番号で指定されるテーブルまたは配列の要素の値を返します。」となっていますが、
第一引数がセル範囲の場合もあり、且つその場合「値」だけでなく、 明らかに参照を返して来ているので、ヘルプの表現がおかしい気がします。
英語バージョンをみると、 配列の値が欲しかったら、配列形式 セルへの参照が欲しかったら、セル範囲形式 を読め、となっています。
http://office.microsoft.com/en-us/excel-help/index-HP005209138.aspx 現在参照不可
そうなると、使う人の主観(目的は何か)で決せられるのではないか、と云う気がします。 勿論、引数の性格(※)によっては、自動的にどちらかに限定されますが、、
※ 第1引数が、配列定数なら配列形式しかあり得ないし、 複数のセル範囲領域であれば、セル範囲形式にならざるを得ない。
(半平太) 2011/04/07 23:33
あっっ、一つ訂正です。
>>ヘルプで確認すると、例えばこんな違いがある様ですが。。。 の所で >>書式1 11 ←{=SUM(INDEX(A1:B5,3,0))} ★Ctrl + Shift + Enter で確定 と書きましたが、実際は、こちらも Enter だけで良かったです。。。
Qooさん抜きで話が進んでしまっていますが
結局 セル範囲形式の場合も >INDEX 関数の計算結果は、セル参照または値として使用されます。 と、言う事なので ますますどちらでも良さそうですよね。
領域番号は省略可能なので 第4引数が省略されていると考えるか・・・・セル範囲形式 そもそも第4引数は無かったと考えるか・・・配列形式 の判断も難しそうです。
それにしても、配列形式の時だけ Ctrl + Shift + Enter で 確定する必要がある状況ってのが、結局分からないので それが分かると、一気に謎がとけるのかも?? 単に「セル範囲形式」のヘルプの方に記述が無いだけかもしれませんが。
(HANA)
> それにしても、配列形式の時だけ Ctrl + Shift + Enter で > 確定する必要がある状況ってのが、結局分からないので > それが分かると、一気に謎がとけるのかも?? >単に「セル範囲形式」のヘルプの方に記述が無いだけかもしれませんが。
私も、配列形式の説明の時だけ複数表示の例を挙げた、とみます。
単一範囲のケースで、客観的な違いがない形にした場合、 どちらの形式であるか区別する意味はないと思います。
ついでに、配列定数を第一引数にして、無理やり領域番号を入れた数式を作ってみましたが、 エラーにならなかったです。→ =INDEX({1,2;3,4},0,2,1) 同じプログラムを使っていると思います。
プログラムの作りは、 第一引数が数値配列なら値のみを返し、セル範囲ならセル参照を返す。 後者は複数領域に対応している。 たった、これだけのことだと思います。
個人的には、配列形式の第一引数にセル範囲も取り扱えると解説したのが 間違いと思っています。 まぁ、ヘルプがおかしいなんて事に誰も驚かないと思いますけど。
(半平太) 2011/04/08 09:07
>ちなみに、載せて下さった表では、F列の先頭が「2」から始まって居ますが >その点は大丈夫ですか? →HANAさんから教えて頂いたわざ(エクセルで表の部分を作成)使ってみたのですが、 表を作成して後、一行目に挿入をして[A][B][C]…という表記をしたのでずれたみたいです。
ご説明は頭がぼーとしていて、まだ完全に整理できていません。ごめんなさいm(__)m お時間をください。
半平太さんへ
以前は大変失礼致しました。せっかく時間を作ってくださったのに私は書き込みの返事をすぐせず申し訳ありませんでした。 私の質問ボードにはもう現れてもらえないと思っておりました。 HANAさんの書き込みに対する返事かえして頂いただけだということはわかっていますがうれしかったです。
HANAさん&半平太さんへ
お二人の書き込み内容に私がついていけてないです。 例: =CELL("address",INDEX(A4:A30,3))も現在は理解できてないです。申し訳ありません。 正常な状態でも話についていけないのですが、今はここまでの書き込みが精一杯です。 お時間をください。
お返事ありがとうございました。
(Qoo 2011/4/07 00:15)
返事をあけないようにすると言っていたのに、一ヶ月近くあいてしまってすいません。 家族が三週間近く病気で休み、その後自分も体調を崩して寝込んでました。 ようやく回復し、HANAさんの書き込みを試し理解できました。 長い間私のいろいろな質問に答えて頂き、本当にありがとうございました。 そして最後にまた失礼なことをして申し訳ありませんでした。
(Qoo 2011/5/3 21:38)
あけないようにしていただけていれば それが大切な事だと思っています。
ご理解頂けた様で良かったです。
(HANA)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.