• ベストアンサー

エクセルで上の行の値を自動的にコピーする(再考 

9月7日の質問 http://www.okweb.ne.jp/kotaeru.php3?q=353100 に付いて#7で解答をいれたものですが、そのご質問内容は A列に 大阪営業所 空白 空白 南大阪店 空白 空白 東大阪営業所 空白 空白 空白 の空白行に先行する大阪営業所、南大阪店等を関数式によって 埋めることで、これを考えたとき、解答者から B1に=if(isblank(A2),B1,A2) やB3に =IF(A3="",B2,A3) をいれると解答があり、質問者はそれでOKのようにお礼 部分で答えておられるが、「空白が3行以上続いた場合、3 行目以下が0になって上手く行かない」のではないでしょうか。私はエクセル2000で解答前と解答後2度やって見ましたがそうなりました。もし皆さんのエクセルではどうでしょうか。違いの理由がわかれば 教えてください。 (私はB2に関数式=IF(A2="",B1 & "",A2)をいれる。 と解答しました。)

質問者が選んだベストアンサー

  • ベストアンサー
  • 2002pon
  • ベストアンサー率48% (42/87)
回答No.4

こんにちは。 いつもimogasiさんの回答には、なるほどと思わせてもらってますです。 #2の方が指摘されている、 > B1に=if(isblank(A2),B1,A2) の入力ミスっていうのは、そもそも循環参照で、 >「空白が3行以上続いた場合、3行目以下が0になって上手く行かない」 っていうのとは違いますよね。 ですので、きっと単純に質問内容で誤記があった、ということでいいですか? その上で、 B2に =IF(A2="",B1,A2) →(1) と =IF(A2="",B1 & "",A2) →(2) いれた場合を考えます。 今はエクセル2000で試しましたが、 >「空白が3行以上続いた場合、3行目以下が0になって上手く行かない」 ということにはなりませんでした。 (1)と(2)の違いは、 「B1」と「B1 & ""」ですが、 この違いと、「3行以上続いた場合」との関連が、うまく想像できません。 if文との関係はあるのでしょうか? 「B1」と「B1 & ""」とは演算上、同じ結果をもたらすだけと思うのですが・・・ 空白が3行以上続くとは、A4もまだ空白ということですよね? で、B3には、B2の値を参照した結果、「××営業所」と表記され、 B4=IF(A4="",B3,A4)で、 B4には、ゼロが表記されると・・・・ では、単純にB4=B3 & "" でもやはりゼロなのでしょうか??

imogasi
質問者

お礼

ご解説及びご指摘ありがとうございました。おっしゃる通り 今もう一度やって見ると、何行空白があっても、正しく埋まる 事を確認しました。私の早とちりでご手数をお掛けしました。 元のご質問のご回答者にもお詫び申します。このやり方の理屈は知っていたつもりなのですが、複写すると3行目以下に式が入る訳ですが、2行目を参照する次の3行目で、その結果の値として解してくれない、これはおかしいぞと思ってしまいました。 数の場合は連続整数のセットは同じ理屈で上手くいったので、あるいは文字列の時だけはダメかと思ってしまったのでした。そして&””をくっ付けると上手くいったもので。ちょっと信じられないのですが、今再度やって見ると上手く行きます。本当にお騒がわせして済みませんでした。今後ともよろしくお願いします。

その他の回答 (3)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.3

こんにちは、前質問の#2です。 前質問の#4は、その方法があったか!って感じですね。 B3にというのは、B2に =A2 がある事を前提としています。 良く読んで頂ければimogasiさんならお分かりになるでしょう。 では。

imogasi
質問者

お礼

元のご質問のご解答者の皆様にお詫びしなければなりません。 びご指摘ありがとうございました。今もう一度やって見ると、何行空白があっても、正しく埋まる 事を確認しました。私の早とちりでご迷惑をお掛けしました。 このやり方の理屈は判っていたつもりなのですが、複写すると3行目以下に式が入る訳ですが、3行め以下が0となり、2行目を参照する次のだい3行目で、その結果の値として解してくれない、これはおかしいと思ってしまいました。 数の場合は連続整数のセットは同じ理屈で上手くいったので、あるいは文字列の時はダメかと思ってしまったのでした。前後2回テストしたブックを保存しておらず、自分の誤り個所が再現できないのですが、私も同じやり方で出来るはずと思っていたものですから、その面では安心しました。この度は申し訳ありません。今後ともよろしく。

  • wolv
  • ベストアンサー率37% (376/1001)
回答No.2

元の質問の回答No2: >B列2行目以下をに >=if(isblank(A2),B1,A2) この質問での記述: > B1に=if(isblank(A2),B1,A2) というわけで、imogasiさんの試したときの 参照するアドレスに入力ミスがあったように思います。 「=if(isblank(A2),B1,A2) 」はB2に入力します。 それを下のほうにコピーします。 B2「=if(isblank(A2),B1,A2) 」 B3「=if(isblank(A3),B2,A3) 」 B4「=if(isblank(A4),B3,A4) 」 : となります。 これならうまくいきました。

imogasi
質問者

お礼

ご解答及びご指摘ありがとうございました。おっしゃる通り 今もう一度やって見ると、何行空白があっても、正しく埋まる 事を確認しました。私の早とちりでご手数をお掛けしました。 元のご質問のご回答者にもお詫び申します。このやり方の理屈は知っていたつもりなののですが、複写すると3行目以下に式が入る訳ですが、その行を参照する次の行で、その結果の値として解してくれない、これはおかしいと思ってしまいました。 数の場合は連続整数のセットは同じ理屈で上手くいったので、あるいは文字列の時はダメかと思ってしまったのでした。

  • takkuni
  • ベストアンサー率24% (166/676)
回答No.1

必ずしも小難しい関数を入れる必要はありません。 次のショーカットでいけます。 お尋ねの、上の行の値を自動的にコピーする・・・〔Ctrl〕+〔D〕 参考までに、 一つ左のデータをコピーする・・・〔Ctrl〕+〔R〕

imogasi
質問者

お礼

ご解答有難うございます。大阪(営)、4行空き、岡山(営)5行空き、広島(営)7行空き、・・・と多数の営業所名がA列にある時、1回(か2回)の操作で出来るでしょうか。営業所の数だけ先頭行を複写するやり方はちょっと横に置いておいて。

関連するQ&A