[[20050822162914]] 『文字の抽出をしたい』(サイトゥ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『文字の抽出をしたい』(サイトゥ)

 <シート一覧表>					
	A	B	C	D	E
1	得意先名	作業場所	     依頼先	 予定日	 時間
2	あいう	コンビニA	ABC商事	 8/29	 9:00
3	かきく	ファミレスA	日本ABC	 8/12	 9:30
4	さしす	DIY	         ABC商事	 8/20	 13:30
5	たちつ	ファミレスB	ABC商事	 8/8	 18:00
6	なにぬ	コンビニB	東日本ABC	 8/23	 9:00

<シート依頼先FAX>

	A	B	C	D	E
1	ABC商事	御中			
2					
3	現場名	作業名	予定日	時間	
4	コンビニA	8/29	9:00	
5	DIY		8/20     13:30	
6	ファミレスB	8/8	18:00	

シート依頼先FAXのA1に依頼先を入力すると、H4以降に該当する現場名と予定日、時間が全て表示されるようにしたいです。
これで大丈夫ですか?VLOOKUPではひとつしか表示されなかったので、何かいい方法があれば。
オートフィル・コピー・ペーストではなく関数で出来るようにしたいです。(サイトゥ)


 えっと、、こういうことやね??
ABC商事	御中		

 現場名	作業名	予定日	時間
コンビニA	8月29日	9:00
DIY		8月20日	13:30
ファミレスB	8月8日	18:00
A4に
=IF(SUM(($A$1=Sheet1!$C$2:$C$6)*1)<ROW(A1),"",
INDEX(Sheet1!$B$2:$B$6,SMALL(IF(Sheet1!$C$2:$C$6=$A$1,ROW($A$1:$A$5)),ROW(A1))))
C4に
=IF(SUM(($A$1=Sheet1!$C$2:$C$6)*1)<ROW(A1),"",
INDEX(Sheet1!$D$2:$E$6,SMALL(IF(Sheet1!$C$2:$C$6=$A$1,ROW($A$1:$A$5)),ROW(A1)),COLUMN(A1)))
と入力していずれもCtrlキーとShiftキーを押しながらEnterキーで確定します。
式の両側に{ 式 }となれば正解です。
ところで、作業名は空白でいいのかな???
どうでしょうか?
(SoulMan)


 Soulmanさん、ありがとうございます!
 そして、作業名ほしいです・・・
それで、早速関数を入れて{ 式 }ってなったんですけど、空白になっちゃって答えが出ないんです・・・(>_<;) どうしてでしょう???
         A	B	C	D	E	F
1	得意先名	作業場所	   依頼先	予定日	時間	作業名
2	あいう	コンビニA   ABC商事	8月29日	9:00	ガラス清掃
3	かきく	ファミレスA  日本ABC	8月12日	9:30	床清掃
4	さしす	DIY     ABC商事	8月20日	13:30	受水槽清掃
5	たちつ	ファミレスB  ABC商事	8月8日	18:00	空気環境測定
6	なにぬ	コンビニB   東日本ABC	8月23日	9:00	日常清掃

<シート依頼先FAX>

	A	B	C	D	E	
1	ABC商事	御中				
2						
3	現場名	   作業名	 予定日  時間		
4	コンビニ	   ガラス清掃   8月29日  9:00		
5	DIY	   受水槽清掃  8月20日  13:30		
6	ファミレスB  空気環境測定	 8月8日	  18:00	

 困ったわねぇ(^^;
式の基本形はこれなのね、でも今回の場合は表示先がねじれているので
=IF(SUM(($A$1=Sheet1!$C$2:$C$6)*1)<ROW(A1),"",
INDEX(Sheet1!$B$2:$B$6,SMALL(IF(Sheet1!$C$2:$C$6=$A$1,ROW($A$1:$A$5)),ROW(A1))))
^^^^^^^^^^^^^^^^^^^^^^
ここを変えるだけなんですね。簡単なサンプルを作ってみましたので、
お確かめください。
http://ryusendo.no-ip.com/cgi-bin/upload/src/up0346.xls
(SoulMan)


 Soulmanさん、やってみました。
範囲の指定をそれぞれB2:B9/C2:C9までに納めればきちんとした結果が出るんですけど、
範囲をそれ以上に設定すると結果がでないんです。空白になります。
私が作成したデータに関数をいれた場合では、現場名にはVALUE、作業名にはNAのエラーになってしまいます...なぜでしょうか...
 (サイトゥ)	

 この手のご質問で範囲を変えるとうまく表示出来ない原因のほとんどは
配列という概念の誤解です。↓こちらに詳しく書いてあります。
[[20050217153128]]『VLOOKUP関数』(初級)
この中の↓この意味がわかれば範囲を変えても問題なく表示することが出来ると思います。
http://ryusendo.no-ip.com/cgi-bin/upload/src/up0244.xls
どうでしょうか?
(SoulMan)

 うーん。。。ごめんなさい。
いろいろやってみてるんですが、へこみ中。。。
どうして、指定範囲により空白で出るところ、NAとかVALUEでかえっちゃうところとあるんでしょうか?????頭の中がパニックです!!
 (サイトゥ)

 そのエラーになる式をここにコピーして貼り付けてみてください。
(SoulMan)


 横からですが
(SoulMan)にお願いがあります。
 上の(SoulMan)さんのレスで、サンプルのexcelファイルを
ダウンロードできるようにリンクが張ってありましたが
 どのようにすれば出来るのでしょうか。差し支えなければ
手法をお教え願いたいのですが。難しいのでしょうか??
  わたしも、未熟ながらこの掲示版で、時たま、レスする
ことがありますが、主にマクロコードで回答していますが
 質問者の中にはマクロを知らない方も多く、回答が
無駄になっているような気もします。マクロの中身やマクロ
の移植方法を知らなくても、マクロの入ったサンプルを
直接使ってもらうことにより解決できる場合もあると思います。
 そのような場合に、(SoulMan)さんのレスのようにダウンロード
できれば便利と思いました。(??)


 To なおさん
 以下のramrunさんのアップローダを使わせていただけば出来ます。
http://ryusendo.no-ip.com/cgi-bin/upload/upload.html

 (??)

 {=IF(SUM(($A$1=Sheet2!$C$2:$C$5)*1)<ROW(Sheet1!A1),"",INDEX(Sheet2!$B$2:$B$5,SMALL(IF(Sheet2!$D$2:$D$5=Sheet1!$A$1,ROW(Sheet1!$A$1:$A$5)),ROW(Sheet1!A1))))}
おはようございます。この式が入ってます。宜しくお願いします。
 (サイトゥ)

 えっと、、、なおさんと(??)さんの関係がよくわかりませんが、、
それはおいといて、、アップローダのことですね?
私は、ramrunさんのご好意に甘えてつかわさせて頂いてます。
アップすると便利ですよね。
でも、アップする時はファイル→プロパティの中に個人名や会社名が記載されていますから
不都合があるのもは削除しておいた方がいいですよ。
それから、ramrunさん宅のアップローダをお借りするのなら、Delキーもお忘れなく。
削除する時に必要ですからね。それから、、時々、ramrunさんにお礼をいう(^^;
この場をお借りしまして、「いつも使わせて頂いております。ありがとうございます。m(__)m」
こんな感じですかね、、どうでしょうか?
と、ここまで書いたら式があったので、、
=IF(SUM(($A$1=Sheet2!$C$2:$C$5)*1)<ROW(A1),"",
INDEX(Sheet2!$B$2:$B$5,SMALL(IF(Sheet2!$D$2:$D$5=$A$1,ROW($A$1:$A$4)),ROW(A1))))
先ず、この式がSheet1にあるとすれば、Sheet1の記述は不要です。
それから、これと
$A$1=Sheet2!$C$2:$C$5
これは同じにならないといけないわね??
Sheet2!$D$2:$D$5=$A$1
それと、最大の問題はこれ、
ROW($A$1:$A$4)
C2、C3、C4、C5の4つだから
$C$2:$C$5
A1、A2、A3、A4の4つにならないと数が合わないわね?
ROW($A$1:$A$4)
以上のことを踏まえてもう一度式を組み立ててみてはどうでしょうか? 
(SoulMan)

表示されました!でも。。。抽出できていないデータや違う依頼先のデータも抽出されてしまいました。。。式は
 =IF(SUM(($C$2='\\Fmv\共用ファイル\斉藤\[一覧表.xls]8月度'!$R$4:$R$1138)*1)<ROW(C2),"",
 INDEX('\\Fmv\共用ファイル\斉藤\[一覧表.xls]8月度'!$C$4:$C$1138,
 SMALL(IF('\\Fmv\共用ファイル\斉藤\[一覧表.xls]8月度'!$R$4:$R$1138=$C$2,ROW($A$2:$A$1136)),ROW(C2))))
 です。
 実は一覧表(元)のデータは1138行あります。
 で、作業をする月に○を入力し、Chooseで表示したい月だけを表示させ、オートフィルタで作業がある○だけを表示させています。
 SoulManさんが教えてくれた関数で表示されている現場名だけを依頼先FAXシートに抽出することは可能ですか??
 ごめんなさい、最初に書いとくべきでしたよね。。。
 (サイトゥ)

 >抽出できていないデータや違う依頼先のデータも抽出されてしまいました
この意味がいまいちわかりませんが、、、
参照先の余分なシート名等を除くと式は↓ですよ?
=IF(SUM(($C$2=$R$4:$R$1138)*1)<ROW(C1),"",
 INDEX($C$4:$C$1138, SMALL(IF($R$4:$R$1138=$C$2,ROW($A$1:$A$1135)),ROW(C1))))
それから、
 >オートフィルタで作業がある○だけを表示させています。
条件に○を追加したら、いいのではないでしょうか?
例えば、
=INDEX(Sheet3!$A$1:$D$16,
SMALL(IF((Sheet3!$A$1:$A$16="あ1")*(Sheet3!$D$1:$D$16="○"),ROW($A$1:$A$16)),ROW(A1)),
COLUMN(A1))
これは、Sheet3のA列が「あ1」でD列が「○」という条件になります。
この様に条件を追加されたらいいと思います。
でも、新規Bookでご自身の思い通りにデータを抽出出来る様になってから、
実Bookへ移行されることをお勧めします。
どうでしょうか?
#それから、ネットでは半角カナは文字化けの原因になりますから控えてくださいね。
(SoulMan)

すみません。。
 >抽出できていないデータや違う依頼先のデータも抽出されてしまいました
 例えば依頼先「ABC商事」の現場名や作業内容を抽出したいと思い、
 SoulMANさんに教えて頂いた関数を入れると抽出結果に依頼先が「ABC商事」
 ではないデータも含まれてしまうんです。さらに、依頼先「ABC商事」なのに
 抽出されないデータもあります。。。説明下手ですみません。

          A	B	C	D	E	F
1	得意先名	作業場所	   依頼先	予定日	時間	作業名
2	あいう	コンビニA   ABC商事	8月29日	9:00	ガラス清掃
3	かきく	ファミレスA  日本ABC	8月12日	9:30	床清掃
4	さしす	DIY     ABC商事	8月20日	13:30	受水槽清掃
5	たちつ	ファミレスB  ABC商事	8月8日	18:00	空気環境測定
6	なにぬ	コンビニB   東日本ABC	8月23日	9:00	日常清掃

<シート依頼先FAX>

	A	B	C	D	E	
1	ABC商事	御中				
2						
3	作業場所	   作業名	 予定日  時間		
4	コンビニ	   ガラス清掃   8月29日  9:00 ←依頼先ABC商事	
5	ファミレスA  床清掃    8月12日  9:30	 ←依頼先日本ABC	
6
 作業場所がDIYとファミレスBは抽出されません。
 (サイトゥ)

 困ったわねェ(^^;
↓これが今のご自身の式です。
=IF(SUM(($C$2=$R$4:$R$1138)*1)<ROW(C2),"",
INDEX($C$4:$C$1138, SMALL(IF($R$4:$R$1138=$C$2,ROW($A$2:$A$1136)),ROW(C2))))
↓これが私が提示した式です。よく見比べてくださいよ。
=IF(SUM(($C$2=$R$4:$R$1138)*1)<ROW(C1),"",
INDEX($C$4:$C$1138, SMALL(IF($R$4:$R$1138=$C$2,ROW($A$1:$A$1135)),ROW(C1))))
どこかちがうでしょ?
この式が抽出したい行の一行目にあるとしたら、、
ROW(C2)は必ず
ROW(C1)です。ROW(A1)、ROW(B1)となるのはOKですが必ず行は「1」です。
それから、最初にも言ったように
ROW($A$2:$A$1136)も
ROW($A$1:$A$1135)です。
配列をインデックスで指定するのですから、、必ず「1」から始まるのです。
わかりますか?私の説明を聞いてますか?
 >この手のご質問で範囲を変えるとうまく表示出来ない原因のほとんどは
 >配列という概念の誤解です。↓こちらに詳しく書いてあります。
なのです。どうでしょうか?
(SoulMan)


(SoulMan)さんに教えてもらった方法で以下にVBAで作ってみました。
  以下からダウンロードして試してください。
 シート1にデータ、シート2にリストアップします。
 シート2のA1セルに依頼先名を記載後、付近の実行ボタンで
 検索調査し、リストアップします。
   日時、時間はセルの書式で書式を設定しておきましたが
   自分の好みに設定してください。(なお)

  蛇足ですが  (??)がどうして(なお)とわかったのでしょうか。
  教えてくださったのは管理者のkazuさんでしょうか。

http://ryusendo.no-ip.com/cgi-bin/upload/src/up0350.xls

コードは以下のようになっています。

Sub test()

sf = Worksheets(2).Cells(1, 1)
If sf <> "" Then

  lastrow2 = Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Row
  If lastrow2 < 4 Then lastrow2 = 4
  Range(Worksheets(2).Cells(4, 1), Worksheets(2).Cells(lastrow2, 4)).ClearContents
  End If

Worksheets(1).Activate

lastrow = Cells(Rows.Count, 1).End(xlUp).Row

'MsgBox lastrow
For i = 2 To lastrow
If Worksheets(1).Cells(i, 3) = sf Then
n = 1
lastrow2 = Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Row

Worksheets(2).Cells(lastrow2 + 1, 1) = Worksheets(1).Cells(i, 2)
Worksheets(2).Cells(lastrow2 + 1, 2) = Worksheets(1).Cells(i, 6)
Worksheets(2).Cells(lastrow2 + 1, 3) = Worksheets(1).Cells(i, 4)
Worksheets(2).Cells(lastrow2 + 1, 4) = Worksheets(1).Cells(i, 5)
Else

End If
Next

Worksheets(2).Activate
Cells(1, 1).Activate
If n = 0 Then MsgBox "調査の依頼先名が存在しませんでした。"
End Sub


 >蛇足ですが  (??)がどうして(なお)とわかったのでしょうか。
 >教えてくださったのは管理者のkazuさんでしょうか。

 誤解と不信感を与えては困りますのでお答えします。
 文面には人の個性が表れますので、長いこと閲覧していると
 どなたが書かれたものかは、ある程度予測できるようになります。

 >主にマクロコードで回答していますが
 この文と全体的な文面でなおさんだと思った次第です。

 本題と関係ないことで失礼しました。

 (??)

初歩的なことがわからなくて申し訳ないです。。
 やっと抽出できるようになりました、ありがとうございます。
 それで、前回ご相談した”○”の条件追加したんですが、#REFエラーが
 出てしまいます。新規bookで練習した際は
 =IF(SUM(($H$1=$D$1:$D$15)*1)<ROW(H1),"",INDEX($B$1:$B$15,
 SMALL(IF(($D$1:$D$15=$H$1)*($E$1:$E$15="○"),ROW($H$1:$H$15)),ROW(H1))))
 で表示されますが、本当のやつでやってみるとエラーが出てしまいます。
 最後にCOLUMNっていうのをつけても同じエラーがでました。
 本当にわかんなくてすみませんが、ご指導宜しくお願いします。。。
 (サイトゥ) 

 ご参考にどうぞ(DACK)
(7)#REF!

   セルの参照がおかしい
  [A REFerence to a cell that does not exist] の略
   
  数式中のセル参照 (セル参照 : ワークシートのセルの位置を表す座標。
  たとえば、列 B と行 3 が交わる位置のセル参照は、A1 形式では B3、
  R1C1 形式では R3C2 です。)が無効なときに表示されます。
   
  (MS-Help 数式中のセル参照が無効なときに表示されます)
   
    (例)
     セルA26 からA30 にa からe と入力し、セルB26 にbと入力し、
      セルC26 に =VLOOKUP(B26,A26:A30,2) と入力で#REF!エラー
     (テーブル範囲がA列だけなのにB列の答えを要求している)
     R1C1形式なのに、A1で指定している場合など

いろいろな#エラー

  この#のついたエラーのことを正式には[エラー値]と呼び、7種類あります。

  #DIV/0!  割り算で分母がゼロ
  #NAME?   関数名や範囲名が間違っている
  #NUM!    大きすぎる数値又は小さすぎる数値
  #NULL!   指定した2つのセル範囲に共通部分がない
  #N/A     関数や数式に使用できる値がない
  #REF!    セルの参照がおかしい
  #VALUE!  引数の種類が正しくない
  
  #######  セルの幅が狭く結果を表示できない

   エクセル・マイスター(20040713)より
http://www.excel.studio-kazu.jp/mag2/backnumber/mm20040713.txt

 ありゃ?失礼!そのままのせますわね(^^;
結果からいくと多分↓こうね?
=IF(SUM((($D$1:$D$15=$H$1)*($E$1:$E$15="○"))*1)<ROW(H1),"",
INDEX($B$1:$B$15, SMALL(IF(($D$1:$D$15=$H$1)*($E$1:$E$15="○"),ROW($H$1:$H$15)),ROW(H1))))
今のご自身の式は↓です。
=IF(SUM(($H$1=$D$1:$D$15)*1)<ROW(H1),"",
INDEX($B$1:$B$15, SMALL(IF(($D$1:$D$15=$H$1)*($E$1:$E$15="○"),ROW($H$1:$H$15)),ROW(H1))))
悪くないけど、、もう少しね(^^;
条件が増えたので最初のところも増やさないとね。。そういうと難しそうに聞こえるから簡単に言葉にしてみますね。
上の式を言葉に直すと
=IF(SUM((条件1*条件2)*1)<フィルする行,"",
INDEX(表示する配列, SMALL(IF((条件1)*(条件2),インデックス番号),SMALL関数の順位)))
となるわけだけど、、まだ難しいわね、、もうちょっとくずすと
SUM((条件1*条件2)*1)
これは個数を求めているのね、つまり、、
$D$1:$D$15=$H$1且つ
$E$1:$E$15="○"の
個数は?となるわけです。わかりますか??
この部分を選択してF9を押すと
{TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;TRUE;FALSE}
{TRUE;TRUE;TRUE;FALSE;FALSE;TRUE;TRUE;TRUE;FALSE;FALSE;TRUE;TRUE;TRUE;FALSE;TRUE}
になって同じ位置同士を×から、、全体としては
{1;0;0;0;0;0;0;0;0;0;0;1;0;0;0}
こうなるのね、、わかりますか?
TRUEとTUREを掛けてこそ「1」なんですね、、、FALSE×TRUEやTRUE×FALSEは「0」なんですね。
これをSUM関数で合計しているから結果的には、上の例ですと「2」が返ります。
SUM({1;0;0;0;0;0;0;0;0;0;0;1;0;0;0})だから・・・「2」ですね?
とこれをIF文で分岐しているのですね、つまり
フィルする行
これですね、2行以上フィルしたら空白、それ以外は表示となるわけです。
後は、だいたいいいけど、、念のために説明しておきますと、
INDEX($B$1:$B$15, SMALL(IF(($D$1:$D$15=$H$1)*($E$1:$E$15="○"),ROW($H$1:$H$15)),ROW(H1))))
この部分は
INDEX(配列,配列の行位置)
だけなんですね、列の位置はないのです。それは配列が$B$1:$B$15だからです。
この配列が、例えば、$B$1:$E$15とかになると、今度は列が必要になってくるのです。
INDEX(配列,配列の行位置,配列の列位置)
なので、式を組み立てるときはいきなり長い式を組むのではなくて、先ず、行なら行、、列なら列が
正しく返るか?を検証しながら組むのです。つまり
SMALL(IF(($D$1:$D$15=$H$1)*($E$1:$E$15="○"),ROW($H$1:$H$15)),ROW(H1)))
この部分だけを取り出して正しく行位置が表示されているかをみるのです。
で、正しく表示されていれば、INDEX関数の行の位置の部分にコピーして貼り付ければいいのです。
列も同じです。
列の部分の式だけを別に取り出して正しく列位置が表示されているかを検証するのです。
正しく表示されていることを確かめてからINDEX関数の列の位置の部分にコピーして貼り付ければいいのです。
上級者ほど長い式を一度に組んでいると思われるかもしれませんが、私なんかは、パーツ、パーツ毎に
バラバラにして最後にドッキングしています。そうしないとわかりませんからね(^^;
とまぁ見直したら、ダラダラと書いてしまったけど、、わかりましたか?
でも、この配列という概念をしっかりと身に付けると様々な場面で有効ですので是非しっかりと
覚えてくださいね。ではでは、失礼致します。
(SoulMan)

詳しい説明ありがとうございます!
 今の私の式は
 =IF(SUM((($C$2='[一覧表.xls]8月度'!$R$4:$R$1138)*('[一覧表.xls]8月度'!$F$4:$F$1138="○"))*1)<ROW(C1),"",
 INDEX('[一覧表.xls]8月度'!$C$4:$C$1138,SMALL(IF(('[一覧表.xls]8月度'!$R$4:$R$1138=$C$2)*('[一覧表.xls]8月度'!$F$4:$F$1138="○"),
 ROW($A$1:$A$1135)),ROW(C1))))
 です。一覧表シートの○が表示されている欄F4:F1138にはCHOOSE関数が入ってます。
 関数が入っていると#REFとなるようなんです。。
 関数をクリアして、”○”とただ入力をしてみたら、きちんと答えがでました。
 CHOOSE関数が入っていても答えが出るようにはなりますか??
 (サイトゥ)

 別に式自体に問題は無い様です。
ところで、CHOOSEの中身は参照ですか?直接ですか?
=CHOOSE(1,"○","▲")
いずれにしましても、上でも書きましたが、こんな時こそパーツで見ることが大切です。
基本的に式で導いた値も直接かいた値も同じです。
式だからとかCHOOSEだからとかというのは関係ありません。
ではどうするかというと
F列の隣にでも
=F4="○"
と入力してTRUEが返るか?調べます。TRUEが返らないのであれば何かが違うのです。
スペースがあったり、なかったり等です。どうしても、うまく行かない時は
思い切って文字を変えてみるとかしかないです。
でも、Excelくんは正直ですからね、きっと違うんですよ。それは、CHOOSEだからとか
は関係ないです。先ずは、小さな式から検証することをお勧めします。
=F4="○"と入力してTRUEが返らないのに長い式でいくら検証しても無駄です。
どうでしょうか?
(SoulMan)

 =F4="○"でやってみました。結果はTRUEでした。
 ということは、CHOOSEは関係ないんですかね????
 では、関数をクリアにして"○"を入れたら出るのかが?????で頭がパンクしそうです。
 CHOOSEは直接か参照かも????なので、式を貼り付けます。。。
 =IF((CHOOSE($C$2,作業予定!I4,作業予定!J4,作業予定!K4,作業予定!L4,作業予定!M4,作業予定!N4,作業予定!O4,作業予定!P4,作業予定!Q4,
 作業予定!R4,作業予定!S4,作業予定!T4))="","",CHOOSE($C$2,作業予定!I4,作業予定!J4,作業予定!K4,作業予定!L4,作業予定!M4,作業予定!N4,
 作業予定!O4,作業予定!P4,作業予定!Q4,作業予定!R4,作業予定!S4,作業予定!T4))
 C2には数字が入ります。例えば8月だったら8が入ります。
 なんか何回もすみません。。。
 (サイトゥ)


 途中でマクロを使う方法で,マクロのワークシートを提案させてもらいましたが
 試してみてもらったでしょうか。

   関数を組み合わせて自分で理解しながた直して自分で完成させるのは大切セルと
   思います。それはそれとして,業務でとりあえず,希望を実現したいなら
    マクロ方式で完璧に可能と思います。(なお)

 マクロ拝見しました。でも難しそうで。。。
 でも、挑戦してみますね!(サイトゥ)

 式は参照なのですね、
=IF(CHOOSE($C$2,I4,J4,K4,L4,M4,N4,O4,P4,Q4,R4,S4,T4)=""
,"",CHOOSE($C$2,I4,J4,K4,L4,M4,N4,O4,P4,Q4,R4,S4,T4))
CHOOSEも問題ない様ですが、IF文の最初のCHOOSEを()で囲む必要はないですね?
となると、、、例えば
=I4="○"
とすると、TRUEですか?FALSEですか?
まぁ、これもF列を参照して、、TRUEなのですから、、関係ないですけどね。
困りましたね、でも直接書いたら参照出来るのですから、その参照出来ない時の
$F$4:$F$1138="○"
この部分を選択してF9で中身を確認するかでしょうね。
それから、なおさんのマクロも一案ですよね。
1138というのは微妙ですよね、関数で出来そうな、、苦しい様な、、、
それから、CHOOSEは↓でも同じですよね?
=IF($C$2="","",CHOOSE($C$2,I4,J4,K4,L4,M4,N4,O4,P4,Q4,R4,S4,T4))
今のままだとC2が空白だと#VALUE!になりませんか?
こんな感じですかねぇ、、、
どうでしょうか?
それか、単純にもう一つ作業列を使って
=IF(F4="○","○","")
として抜き出してそこを参照するかでしょうか?
(SoulMan)


>でも難しそうで

 自分でコードを作る場合は初めての場合はむずかしかもしれませんが,今回のように
 作ってあるファイル(シート)を使うだけならなんら難しさはありません。
   今回,実行ボタンを押すだけで,シート1の表からリストアップします。
   将来,自分なりに改造したり,内容を変更するにはマクロも知識が
  必要になりますが。(なお)


 一つ作業列を使ったらできました!ありがとうございました!!
 気長にご指導していただきありがとうございました!
 なおさんのマクロも挑戦してみます!
 (サイトゥ)

 もう一つ教えてください。スケジュールに入力した日付を一覧表に自動的に入るようにしたいです。
 いろいろとやってはいるんですが上手くいきません。。。
 宜しくお願いします。

 <一覧表>
 	A	  B	    C	    D	    E	    F
1	現場名	  作業名   マーク  予定日  開始時間 終了時間
2	ファミレス  グリストラップ				
3	コンビニ	  床清掃	○			
4	眼科	  窓清掃	○			
5	耳鼻科	  床清掃				
6	児童館	  空気環境測定	○			
7	図書館	  窓清掃				

<スケジュール>

	A	B	C	D	E	F
1		9月1日	9月2日	9月3日	9月4日	9月5日
2	現場名	眼科				
3	作業名	窓清掃
4	開始時間	9:00
5	終了時間	15:30
6		
7	現場名	コンビニ
8	作業名	床清掃
9	開始時間	16:30
10	終了時間	18:00
11		
12	現場名	
13	作業名	
14	開始時間	
15	終了時間	
16		
17	現場名	
18	作業名	
19	開始時間
20	終了時間

 予め作成した一覧表を元にスケジュールを決めます。
 マークに○が入っている作業だけです。
 @スケジュールの予定日に現場名や作業名を入力をすると一覧表の該当箇所に予定日が反映される。
 Aスケジュールに開始時間と終了時間を入力すると一覧表に反映される。
 よろしくお願いします。
(サイトゥ)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.