アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセル2002使用です。

IF関数で、名前の定義を利用したいのですがうまくいきません。


A1に数値「1」を入力するかしないかとします。

(A1:C1)を名前の定義で「範囲1」とします
各セルに文字が入力されています。

(D1:F1)を名前の定義で「範囲2」とします。
各セルはブランクのままです。


A1セルに数値「1」が入力されて時に、「範囲2」に「範囲1」がコピーされるようにしたいのですがどうすればいいのでしょうか?


範囲2=IF(A1=1,範囲1)

ではだめですよね。。。。

よろしくお願いします。

A 回答 (4件)

>A1セルに数値「1」が入力されて時に、「範囲2」に「範囲1」がコピーされるようにしたいのですがどうすればいいのでしょうか?


◎ 範囲2=IF(A1=1,範囲1)

その式の考え方が、もうプログラム式なんですね。
VBAの作り方は、ちょっと違いますが、たぶん、以下のコードを見ていて、なんとなくお分かりになるかと思います。

シート上のシートタブ(シートの下部のSheet1/Sheet2/..)を該当するシートを右クリック
コードの表示をクリックで以下を貼り付けます。

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" And Range("A1").Value = 1 Then
'A1に1が入ったときだけ、起動する
 Application.EnableEvents = False '貼り付け時に自動で働かないようにする
 Range("範囲2").Value = Range("範囲1").Value
 Application.EnableEvents = True '解除
End If
End Sub

この回答への補足

Wendy02さま 早速のご回答ありがとうございます。

ご丁寧なご回答いただき誠に申し訳ないのですが、今回は関数のみで処理したいのですが、何とかならないでしょうか?

説明不足で本当に申し訳ありません。
よろしくお願いします。

補足日時:2005/04/19 16:36
    • good
    • 0

以下の方法は如何でしょうか。


(1)範囲2をドラッグ
(2)関数「=IF(A1=1,範囲1,””)を入力
(3)関数「Enter」する際、「Shift&Ctrl」を押下する

この回答への補足

mu2011さま早速のご回答ありがとうございます。

範囲2をドラックしても数式の入力はD1セルにされてしまうため上手くいきません。

(3)の関数「Enter」する際、「Shift&Ctrl」を押下する がどのような効果があるのかよくわからないのですが・・・

ご多忙中すいません。よろしくお願いします。

補足日時:2005/04/19 18:17
    • good
    • 0

関数を使うと云うことになると、例えば、


D1セルにA1セルの内容を反映しようとすると

[D1]=IF(A1=1,A1,"")

とすればいいわけです。
E1,F1セルについても、

[E1]=IF(A1=1,B1,"")
[F1]=IF(A1=1,C1,"")

となります。
で、ここまで書けば、何となくわかってもらえるかと思いますが、
セルが参照できるのは1つのセルに1つのセルが対応します。
範囲で複数セルを指定した場合は、どのセルのデータを使うのかがわからないため、エラーになります。

したがって、上記の例で示したように、一つのセルが一つのセルを参照するようにしないとダメです。

ご質問のように複数セルに複数セルを対応させるのは無理です。

ですから、名前を定義する場合も一つのセルに名前を付けて利用しないと、エラーとなります。
    • good
    • 0
この回答へのお礼

DoragonFang様 早速のご回答ありがとうございます。

やっぱりだめですか。。。

名前の定義の機能があるのでできそうな気がしたんでうすが・・・

ありがとうございました。
今後ともよろしくお願いします

お礼日時:2005/04/19 21:19

>今回は関数のみで処理したいのですが、何とかならないでしょうか?


例えば、単に、オブジェクトを写すだけでよいというのならなんとかなっても、そうでなければ、以下のように、D1:F1(範囲2)に、式を埋め込まないと出来ません。

とどのつまり、
D1:F1 に
=IF($A$1=1,A1,"") ....
というような式でしか埋められないのです。
関数式は、そこに戻り値を返す、ということしかしません。

定義した「名前」を使うのでしたら、以下のようになります。
=IF($A$1=1,INDEX(範囲1,,COLUMN(A1)),"")....

>「範囲2」に「範囲1」がコピーされるようにしたい
という、実際のセルの値をコピーするような動作を伴ったことは、Excelの関数では、根本的に出来ないのです。残念ですが。
    • good
    • 0
この回答へのお礼

Wendy02様何度もありがとうございます。

範囲で一気にできたら楽だと思うのですが・・・
そこはVBAということになるのですね。

INDEX関数ありがとうございます。
検討してみます。

今後ともよろしくお願いします

お礼日時:2005/04/19 21:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!