- ベストアンサー
EXCELの関数の入力の仕方
私の知識不足の為どうすればいいのか困っています。どうぞお願いします。 シート1に | A | B | C | D | --|-----|----|----|----|--- 1 |田中 | | | | --|-----|----|----|----|--- 2 |佐藤 | | | | --|-----|----|----|----|--- 3 |鈴木 | | | | --|-----|----|----|----|--- 4 |山田 | | | | シート2に | A | B | C | D | E | F --|-----|----|----|----|----|---- 1 | | 1 | 2 | 3 | 4 | 5 --|-----|----|----|----|----|---- 2 |田中 | | | | | --|-----|----|----|----|----|---- 3 |佐藤 | | | | | --|-----|----|----|----|----|---- 4 |鈴木 | | | | | --|-----|----|----|----|----|---- 5 |山田 | | | | | とあったとします。(シート2の横に並んだ数字は日にちです。) (シート1は入力用シート、シート2は印刷用シートとして使います。) 例題として、田中さんは2日と3日が入院。5日が外出すると仮定して、 シート1のB1に"2n"、C1に"3n"、D1に"5g"と入力したら、 シート2のC2に"入"、D2も"入"、F2が"外"と表示させたいの です。 色々試行錯誤しましたが、一向にできず、困っています。 お手すきの時がありましたら、回答お願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
次の方法は如何でしょうか。 Sheet2のB1に以下の数式を設定、縦横にコピーして下さい。 因みにSheet1の入力データ、sheet2の1行目は半角の数値、sheet1の列範囲は固定で30列としています。 =IF(COUNTIF(OFFSET(Sheet1!$A$1,MATCH($A2,Sheet1!$A:$A,0)-1,,,30),B$1&"n"),"入",IF(COUNTIF(OFFSET(Sheet1!$A$1,MATCH($A2,Sheet1!$A:$A,0)-1,,,30),B$1&"g"),"外",""))
その他の回答 (1)
- FEX2053
- ベストアンサー率37% (7991/21371)
とりあえず、A列がシート1,2とも全く同じ順序だとしても、 (これが違うともっと大騒ぎになります)問題になるのが「シート 1の最大入力件数が不定」ということなんです。 シート1の最大入力件数が一定かつ少数なら、こんな感じでIF文を 重ねれば可能なんですが、 2列目:=IF(LEFT(B1,1)="2",IF(RIGHT(B1,1)="n","入",IF(RIGHT(B1,1)="g","外",""))) &IF(LEFT(C1,1)="2",IF(RIGHT(C1,1)="n","入",IF(RIGHT(C1,1)="g","外",""))) &・・・ 3列目:=IF(LEFT(B1,1)="3",IF(RIGHT(B1,1)="n","入",IF(RIGHT(B1,1)="g","外",""))) &IF(LEFT(C1,1)="3",IF(RIGHT(C1,1)="n","入",IF(RIGHT(C1,1)="g","外",""))) &・・・ やはり、VBAを使って関数を作るしか無さそうな気はしますが、関数 だと思いっきり処理速度が遅くなりそうです。「ボタンを押したら計算 してくれる」というプログラム型にするのが現実的な解のように思い ますけど・・・。
お礼
回答ありがとうございます。 NO.2の方を使ってうまくいきました。 お時間さいてくださりありがとうございました。
お礼
本当に本当にありがとうございました。 おかげさまで、完成いたしました。