- ベストアンサー
エクセルの使用法
以下の様な事はエクセルで簡単に出来ないのですか? シート1 1 1/19 2 3 1/24 4 1/25 5 とシート1に打ち込んだ場合にシ-ト2に以下の様に自動的にになるように。 シ-ト2 1 1/19 2 1/24 3 1/25 またシート1の空欄の数には規則性はありません。 分かる方教えて下さい。また、出来ないのであれば出来ないという回答をお願いします。
- みんなの回答 (10)
- 専門家の回答
質問者が選んだベストアンサー
>ちなみにROW(A1)のA1とは何を表しているのでしょうか? このA1は、結果を返す1行目という意味です。 シート1のA列にあるデータの数が2つだったとすると、3行目以降はエラーとなるので、ROW(A3)>2より空白を返すようにしています。 したがって、10行目から始めるとしてもA1でなければなりません(あるいは、ROW(A10)-ROW(A$10)のようにしておきます)。
その他の回答 (9)
- cafe_au_lait
- ベストアンサー率51% (143/276)
No.3です。No.6さんの式でもうまくいきませんか・・・。 以下の式の結果を教えていただけますか? =COUNTA(Sheet1!$A$1:$A$100) =INDEX(Sheet1!$A$1:$A$100,1/LARGE(INDEX((Sheet1!$A$1:$A$100<>"")/ROW(Sheet1!$A$1:$A$100),),ROW(A1))) =IF(ISERROR(INDEX(Sheet1!$A$1:$A$100,1/LARGE(INDEX((Sheet1!$A$1:$A$100<>"")/ROW(Sheet1!$A$1:$A$100),),ROW(A1)))) ,"",INDEX(Sheet1!$A$1:$A$100,1/LARGE(INDEX((Sheet1!$A$1:$A$100<>"")/ROW(Sheet1!$A$1:$A$100),),ROW(A1)))) 3番目の式は改行を除いてください。 エラーではなく空白が返されると言うことは、最初のIF文で条件が真だと判定されているものと思われます。ROW(A1)より小さいとなると、1番目の式の結果は0になるはずです。 2番目の式はIF文を除いたもので、これだけだと下の方にエラーが出るのですが、一応動作するかの確認です。 3番目の式はエラー回避の手段としてCOUNT(COUNTA) を使わず、ISERROR関数を用いています。2番目の式が動作していればこれで動作すると思います。ただ、長いです。
- ham_kamo
- ベストアンサー率55% (659/1197)
No.6です。 #NUM!が出るのは、おそらく「Ctrl+Shift+Enter」でA1に入力していないからだと思います。 この数式は「配列数式」と言う種類の数式で、普通の数式と違ってセルに数式を入れた後、Ctrl+Shift+Enterで入力する必要があります。 配列数式で入力すると、数式バーの数字は{}で挟まれて表示されます。 その状態で、下にコピーしてみてください。
補足
度々ありがとうございます。 先程と同じ数式を入れてみたのですが、 NO3さんの回答と同じくエラー表示もなく、空欄になってしまいました。なぜでしょう?数式が間違っているのでしょうか? せっかくお二人に教えていただいたのに、私の能力不足で申し訳ございません。
- mshr1962
- ベストアンサー率39% (7417/18945)
日付を昇順で並べるだけなら A1=IF(COUNT(Sheet1!A:A)>=ROW(),SMALL(Sheet1!A:A,ROW()),"") として下方にコピー 但し、セルの書式設定を日付(3/14)にしてください。
- ham_kamo
- ベストアンサー率55% (659/1197)
たびたびNo.4です。無視してくださいと書いたものの、一応数式ができたので追加で回答します。 =IF(COUNTA(Sheet1!$A$1:$A$1000)<ROW(A1),"",INDEX(Sheet1!$A$1:$A$1000,SMALL(IF((Sheet1!$A$1:$A$1000)<>"",ROW(Sheet1!$A$1:$A$1000),99999),ROW(A1))))
補足
回答ありがとうございます。 早速試してみたのですが、 Sheet1のA1をSheet2のA1にはできたのですが、 数式を下にのばしたら、sheet2のA2セルからは#NUM!と表示されます。 sheet1のA2に何も入っていないからでしょうか? また、これは他のファイルに飛ばす事も可能でしょうか? お手数ですがお願いします。
- ham_kamo
- ベストアンサー率55% (659/1197)
No.4です。 すみません、先ほどの数式は誤りでした。(Sheet1のデータが昇順に並んでないとうまくいかないことに気づきました) 訂正したいところですが、すでに的確な回答が出ているので、私の回答は無視してください。
- ham_kamo
- ベストアンサー率55% (659/1197)
Sheet1のA列にデータが入力されているとして、Sheet2のA1に、 =IF(COUNTA(Sheet1!$A$1:$A$1000)<ROW(A1),"",SMALL(IF((Sheet1!$A$1:$A$1000)<>"",Sheet1!$A$1:$A$1000,""),ROW(A1))) と入力して、配列数式なので「Ctrl+Shift+Enter」で確定させてください。 あとは、それを下にコピー。 ※Sheet1のデータが1000行以上ある場合は、数式中の$1000を実際の行数以上の数値に変更してください。
- cafe_au_lait
- ベストアンサー率51% (143/276)
Sheet2のA1 =IF(ROW(A1)>COUNT(Sheet1!$A$1:$A$100),"",INDEX(Sheet1!$A$1:$A$100,1/LARGE(INDEX((Sheet1!$A$1:$A$100<>"")/ROW(Sheet1!$A$1:$A$100),),ROW(A1))))
補足
回答ありがとうございます。やってみたのですが、sheet2のほうにはエラー表示も何もでなく、空欄になってしまいます。もちろんそのセルには計算式は入っています。 どうしてでしょうか? お手数ですが回答お願いいたします。
- KamiHotoke
- ベストアンサー率40% (8/20)
先ほどの件で、”0”表示がきになれば、ツール(T)、オプション(O)、表示タグで「ゼロ値(Z)」のチェックをはずすか、計算式を=+IF(Sheet1!A1="","",Sheet1!A1)としてドラッグなどでコピーしてください。
- KamiHotoke
- ベストアンサー率40% (8/20)
<計算式を入れる簡単な方法> 1.シート2にのA1セルを選択し、+をいれ、編集モードにします。 2.シート1のA1を選択してから「Enter]をたたいてください。 これで、シート2にのA1セルには”=+Sheet1!A1”という計算式が入ったはずです。 3.シート1のA1の計算式をA1セルのドラッグで縦、横にコピーする。 くまなくコピーすれば出来上がりです・
補足
ありがとうございます。 シート1 A 1 20-070412 2 3 20-070412 で先ほどの式で 1の答えは2 2、3の式の答えは20-070412となりました。 ちなみにROW(A1)のA1とは何を表しているのでしょうか?