[[20061225214611]] 『列全体への関数の適用』(みーこ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『列全体への関数の適用』(みーこ)

 はじめまして。行き詰まっていろいろと参照させていただいたのですが、目的の操作ができないので、お知恵を拝借させてくださいませ。
excelについてまったくの初心者でも扱うことのできる表計算を作成すべく、なるべく汎用性よりも操作の単純化を目的に、表を作成中なのですが、
列全体に対して関数を適用させることは可能でしょうか。

 A列のみに入力させ、それを自動的に反映してB列に別の文字列を表示させたいのですが。
 AB
 ○1
 ■2
 ●1
 □2
 ●1
 上記の例ですと、A列に「マル」という図形が入力されている場合、B列には「1」という数字を表示させたい、ということなのですが。
将来的にAB列ともに行がもっと下方向に伸びていくため、オートフィルでいちいち伸ばすのではなく、
A列への入力だけでB列に「1」あるいは「2」が自動的に表示されるようにしたいのです。
が、(実際にはB列の表示には「もしA列がマルならば〜」というIF関数を使っているのですが)B列全体にこの関数を適用させることができません。

 excelのver.は2000なので、条件付き書式では表示が不可能です。
何か良い知恵がございましたら、お教えください。

 >>B列全体にこの関数を適用させることができません

 という意味がよく解かりませんが、例えば
 =IF(A1="○",1,2)
 のような式を前以って、B列全体にコピペではいけないんでしょうか?
   (SS)

 ご解答ありがとうございます。言葉足らずで申し訳ありません。

 Bという列全体にその関数が適用されるよう仕掛けておきたいのです。
 ちなみに適用したい関数はお教えいただきました関数と同様のもので、それ単体では機能するので、オートフィルで行を増やしていく分には問題ないのですが…。
 B列全体を選択反転し、普通にコピペしようとすると、弾かれてしまいます。

 オートフィルであらかじめ大量に行を作っておく方法も考えはしたのですが、
最終的に集計などで使用したい欄(列)ですので、未入力のセルにはできれば何も表示させたくありません。
使用者がオートフィルの機能を知らないものですから、できる限りそういった操作ナシで使える表にしたかったのですが。

 また何か案があればよろしくお願いいたします。
(みーこ)

 まず最初に、新規投稿の際は
  『内容の要約』(ニックネーム)
   質問内容・・・
   ・・・・・・・
 という書式にして下さいますようお願いします。

 また、『の前に半角スペースがあると、一覧で『W・・・』のように表示されます。
 [返信・編集]から既存の書き込みの変更が出来るので、他の書き込みを消さないよう
 タイトルも含め、変更していただけると幸甚に存じます。
  
  
 >B列全体を選択反転し、普通にコピペしようとすると、弾かれてしまいます。
 これは、どのように弾かれますか?(エラーでもでますかね?)
   1.B1に数式を入力。そのセルをコピー。
   2.B列を選択
   3.右クリック→貼り付け
 とすると、私は上手く行きましたが・・・・。

 >未入力のセルにはできれば何も表示させたくありません。
 事前にB列全体に数式をコピーしておく という戦法をとるのなら
 =IF(B1="","",現在の式)
 の様に、外側をもう一つIF関数でくくって
 「B1が空欄だったら、空欄。そうでなければ既存のIF関数で・・」
 と言った感じの数式にしておけば、B列に入力がない場合数字は表示されません。
 (ただし、文字列が返されます。)

 事前に数式を入力しておかない という方法をとりたいのなら
 ・・・マクロでやるのが確実と思いますが、一般機能にこだわって(笑)
 メニュー・ツール→オプション [編集]タブの中の
 「リスト形式及び数式を拡張する(L)」にチェックを入れておくのはどうでしょう。

 何を持ってリストとするのかは、エクセル君任せなので薄氷を履むようですが
 ある程度(3つ以上連続?)A列に入力があり、それと同じ行B列に数式が入力してある状態で、
 その直下の(B列に数式がない行の)A列セルに何かを入力し、Enterで確定すると
 勝手に数式を拡張して、何も入力されていなかったはずのB列セルに、上の行の式が適用されます。

 マクロでの処理をご希望で在れば、(みーこさんのマクロスキルにもよりますが)
 きっとご呈示の物はサンプルでしょうから、もっと正確な情報(セル番地や
 実際に表示させたい物・等)を載せておくのがよいかもしれません。

 (HANA)

 > A列への入力だけでB列に「1」あるいは「2」が自動的に表示されるようにしたいのです。

 というのを考えてみました。シートタブ(シートの下の Sheet1 とあるところ)を
 右クリックし、そこに次のコードを貼り付けます。

 Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column <> 1 Then Exit Sub
    If Target.Value = "○" Or Target.Value = "●" Then
        Target.Offset(0, 1).Value = 1
    Else
        Target.Offset(0, 1).Value = 2
    End If
 End Sub

 とりあえず、A列に ○ か ● がはいれば、その隣のセルに 1、○●以外は 2 が
 はいるような設定です。
 (P)


 横からすみません。
 基本的には(P)さんのでよいですが、複数セル範囲がコピーされたような場合、
 エラーになってしまいますので、
 Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rg As Range
    For Each rg In Target
        If rg.Column = 1 Then
            Select Case rg.Value
            Case "○"
                rg.Offset(0, 1).Value = 1
            Case "●"
                rg.Offset(0, 1).Value = 2
            End Select
        End If
    Next
 End Sub
 のような方が、良いかと思います。
 (Mook)

 皆様、丁寧かつわかりやすいご回答をありがとうございました。
 結局、将来的なものも考慮し使用者に応用がきく範囲ということで、HANA様に教えていただきましたような簡単且つある程度汎用性のある関数を使用することで、
今回は解決とさせていただきました。
 また、マクロを使えばよりすっきりすることもわかり、個人的にも非常に勉強になりました。
 かなり煮詰まっておりましたので、本当に助かりました。
 ご協力ありがとうございます。

 記入の仕方については、今後気をつけたいと思います。
大変失礼いたしました。
 (みーこ)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.