• ベストアンサー

関数の値が真の時、選択した範囲の表示は可能?

IF関数で真の値の条件を満たした時に、選択した範囲の表示、 例えば、  A   B  C  D   E・・・ 1 2 3 A1~E1までのデータを1つずつ関数を入力しないで選択した行を 丸ごとA3~E3に表示させる事は可能でしょうか? 可能ならば、やり方を教えていただけませんでしょうか。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんにちは。 VBA以外の方法では、以下のようにすると出来ます。    A   B   C   D   E 1  あ  い  う  え  お 2 (ここは何もないとします) 3  ここに表示 最初に、A1:E1 をコピー 次に、 A3 にセルポインターをもってきて、シフトを押しながら-編集-リンク貼り付け 次に、 A10: 1 A11: =IF(A10=1,"A1:E1","A2:E2") とします。 A11 にセルポインターを置いて、メニュの挿入-名前-定義 名前  「表示」 参照範囲  「=INDIRECT(Sheet1!$A$11)」 次に、 A3 をクリックすると、 =$A$1:$E$1 となっていますから、 =表示 に書き換えます。 そうすれば、IF の条件文で、A1:E1 の内容を、A3:E3 に表示することが可能です。

BJ-0571
質問者

補足

ありがとうございます!IF関数でもできるんですね!このやり方をやってみたのですが、 >シフトを押しながら-編集-リンク貼り付け の部分がよく分からないんですが・・・、というか、「図のリンク貼り付け」になってしまいます。=表示 に書き換えをしてもA3-E3の内容表示が変わらないんですが・・・。 使用している Verは Excel2003です。

その他の回答 (5)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

こんにちは。Wendy02です。 Excel 2003 でも大丈夫です。 >シフトを押しながら-編集-リンク貼り付け これは、 「図のリンク貼り付け」でした。失礼しました。 おそらく、以下の部分が、正しく入っていないと思います。 メニューの[名前]-[定義] の名前(W) 「表示」 の参照範囲(R)は、 「=INDIRECT(Sheet1!$A$1:$E$1)」 と入っていますか? (INDIRECT関数が大事です) (ただし、Sheet1!は、そのコピーして貼り付けたシート名です。)

BJ-0571
質問者

お礼

昨夜できました! Wendy02さんのアンサー集をみせてもらっていたら、タイトルは違っていますがほぼ同内容の質問があり、それを元にもう一度やってみると出来ました!!最初のA1:E1のコピーをブランクのコピーに、INDIRECTの参照範囲をA11に変えてみました。二度もお付き合いいただき、本当にありがとうございました。助かりました!!

BJ-0571
質問者

補足

すみません・・・。 全部キッチリ打ち込んだのですが、ダメでした・・・。(T_T) 入力終了後にA1:E1の内容を打ち変えてもA3:E3に反映されません・・・。参照範囲はANO.5の方とANO.6の両方試してみました。 IWendy02さんはIF関数を入れたA11の所の表示はどうなっていますか? こちらは回答していただいた文をコピーして貼るとA1:E1で、自分でIF関数を入力すると(範囲をドラッグ)「あ」と表示されます。どこがおかしいのか、どうかもう一度チャンスを下さい。お忙しい所本当に申し訳ありません。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

質問者の発想がプログラム的に向かってますが、VBAを経験ないために、質問のようになったと思います。 <表計算の関数の大原則>。 (1)関数は値を問題にするもの (2)関数式を入れるセルの値を決めるもので 式を入れる以外のセルの値を左右できない。 =IF(A1>1,B3=B1,"") のような式を、たとえばA6に入れられない。 式の中に、値をセットしたいB3のようなセルの番地を指定できない。 =IF(A1>1,B1,"")のように式を入れるB6のセルの値しか、左右できない。=IF(A1>1,=B1,"")の表現もエラーになる。 VBAなら Sub test01() If Range("A1") > 1 Then Range("B3") = Range("B1") Range("C3") = Range("C1") Range("D3") = Range("D1") Range("E3") = Range("E1") End If End Sub とか Sub test02() If Range("A1") > 1 Then Range("B1:e1").Copy Range("B3:e3").PasteSpecial End If End Sub とかできます。後者は意味が少し違いますが。

BJ-0571
質問者

お礼

アドバイスありがとうございます。ご指摘の通り、プログラムに関する事柄については、まったく理解できていません。入力内容によって注文書の書式を様々に表示させたいという思いから上記質問をさせていただいたのですが、せっかく色々な方に見ていただいたのに、私の無知のせいで皆さんには意味不明にうつってしまったようです。VBAに関してはこれから少しずつ勉強していきたいと思います。ありがとうございました。

  • aroi-aroi
  • ベストアンサー率34% (40/115)
回答No.3

A3に「 =IF(条件,A1,"") 」 B3に「 =IF(条件,B1,"") 」 C3に…(略) …とやれば出来ることを、3行目のセルに一つ一つ関数を入力することをせずにできないか? ということですね? A3だけいれて、B3以下にオートフィルで一気にコピーできるけれども、それもしないで、ということであれば、 マクロ(VBA)を使うしかありません。

  • banker_U
  • ベストアンサー率21% (17/78)
回答No.2

私も正直なにがしたいのかさっぱり見えていませんが、 ひょっとして、各セルに関数を打ち込んでいくのが面倒 と言う話ですか? セルをコピーすれば済むって言う問題じゃないんですか?

  • edomin
  • ベストアンサー率32% (327/1003)
回答No.1

何処のセルのIF関数が真になったときですか? 何の関数も設定されていないセル(例えばE3)に表示させるにはVBAを使わなければ無理です。 もう少しやりたいことを具体的に書いてください。

BJ-0571
質問者

補足

すみません、言葉足らずでした。 「どこのセルが真の値か」ですが、これはどこでも構いません。 ただ、IF関数の値が”真”の時のかえして欲しい値にA1~D1などの範囲を指定して、範囲内のセルのデータを同じ大きさのセルの範囲に表示させる事ができるのか?という事ができるならば、やり方を教えていただけませんでしょうか。・・・うまく伝わってますでしょうか。

関連するQ&A