ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Excel(エクセル)活用コミュの特定のセルに入力すると、別セルにデータが表示される方法

  • mixiチェック
  • このエントリーをはてなブックマークに追加
タイトルだけでは、VLOOKUPなどの方法が連想されるかもしれませんが、違います(多分)。

会社で使われているExcelデータに、私が疑問に思っている方法が使われているようです。
途中の行まではちゃんと設定されているようですが、ある行を超えると、部分的な列にのみ設定されています。
古いデータのようで、最初に作った人を探すのは困難です。
どうにかして、設定が消えている(?)列にも設定したいので、ご存知の方がおられたら、教えてください。

《状況》
1.セルA1に入力すると、セルE1〜N1にデータが現れる。
2.セルE1〜N1を選択しても、データは何も入っていない。
3.セルA1に入力すると、セルE1〜N1に現れるのは、VLOOKUP関数で、
 同一シート内に参照表がある。
4.セルA1に一旦入力して、一度でもセルE1〜N1にデータが現れると、
 セルA1のデータを消しても、セルE1〜N1のデータは消えない。
5.セルA1、E1〜N1には、条件付き書式は設定されていない。
6.Excelは2003
7.セルE1〜N1を選択してDeleteしても、上記1〜4の結果は変わらない。
8.セルF1をセルE1にコピーペーストしても、上記1〜4の結果は変わらない。
 書式のコピーをしても同じ。
9.セルE1〜N1に何か文字を入力しておくと、セルA1に入力しても、
 セルE1〜N1には入力した文字のまま(入力した文字は、それが表示される)

といった状況です。

関係ないかもしれませんが、マクロが一つ設定されていて、ボタンを押すと、同一ファイル内の別シートにデータをコピーするようになっています。
それ以外にマクロはありません。

思いつくことはいくつか試してみましたし、ネット検索も何パターンかしましたが、
このような状況のものは見つけられませんでした。

すでにどこかに書かれてましたら、そのトピックへの誘導でもかまいません。

どうぞよろしくお願いします。
(ものすごく初歩的なことだったらどうしようと、ちょっとドキドキしつつ…)

コメント(33)

>それ以外にマクロはありません。
さくらぼうず さんが、このマクロというのを「標準モジュール」に限定して想定していて、
実際にはワークシートオブジェクト側に転記のためのコードが記述されているという事は
ありませんか?
>マクロが一つ設定されていて、ボタンを押すと、同一ファイル内の別シートにデータをコピーするようになっています。
>それ以外にマクロはありません。
とありますが、一応確認です
シートモジュール(標準モジュールではない)にも
VBAは組まれていないのでしょうか?
あっ、かぶってしまいましたね・・・
>>[1] >>[2] マリ男さん

さっそくの回答ありがとうございます。
お二人とも内容が同じと思われますので、一緒にお返事させてくださいませ。

>実際にはワークシートオブジェクト側に転記のためのコードが記述されているという事は
>ありませんか?

>シートモジュール(標準モジュールではない)にも
>VBAは組まれていないのでしょうか?


とのことですが、すみません、未確認です。
シートモジュールというものがあるんですね!
……お二人のご想像通り、標準モジュールのみを想定しておりました。

データは月曜日に会社に行かないと確認できないので、
確認してからのお返事とさせてくださいませ。
>>[4]
おそらく、Worksheet_Changeイベントなどのプロシージャが
記述されているのではないかと思います
Worksheet_Changeイベントはセルが変更された時に発生しますから
A1セルが変更されたとき、所定の処理を行うということを
しているのではないでしょうかね
各シート名のシートモジュール以外にも、「ThisWorkbook」というモジュールの可能性もあるので、念のため。
>>[5]

ありがとうございます。
調べる時の手掛かりになります。
助かります。
>>[6]

ありがとうございます。

ThisWorkbookというのもあるんですね…
奥が深いです…。
ご報告です。

本日会社でデータを確認してみました。

が、シートモジュールにも、ThisWorkbookにも、
なんの記述もされていませんでした…。

確認方法は、Visual Bacicを起動(?)して、左側にある、ウィンドウの
Sheet1(*****),Sheet2(****),・・・・・・
とあるものの、問題のシートのものをダブルクリックして、コードを表示しました。
(ThisWorkbookも、問題のファイルの一番下にあるものを開きました)
何度も開いてみましたが中身が何もなかったので、問題のファイル一つのみを開いての確認もしています。


一つ思いついて、トピックトップの確認の他にもう一つ確認しました。
セルA1に入力する文字は、確認の最中は、正しい文字列を入力していましたので、
本日は、意味のない羅列をしてみました。
と、セルE1〜N1には何も現れませんでした。
改めて正しい文字列を入れたところ、現れました。

それから、関係ないかもしれませんが、E1〜N1に入っていたのは、VLOOKUPではなく、LOOKUPでした。



確認方法の間違いなどありましたら、指摘いただけたらと思います。

あるいは、別の方法がある、ということでしたら、教えていただけたら助かります。

引き続き、よろしくお願いいたしますm(__)m
コードの有無を確認するためにVBAエディタでコードを表示させた時に、
コードの表示対象をWorksheetオブジェクト側に設定し忘れていませんか?

対象が"(General)"のままだと、ワークシートのイベントハンドラのコードは表示されず、
そのモジュール全体に通じる変数宣言などの部分しか表示されません。
添付画像のように、対象はコードウィンドウ左上のドロップダウンから選択出来ますので、
念のためご確認下さいませ。
>>[10]

ありがとうございます。

書き忘れていましたが、確認済みでしたあせあせ(飛び散る汗)

Worksheetに変更しても、

「 Private Sub Workbook_Open()

 End Sub 」

しか表示されませんでした…
念のため、もう一度確認

(1)セルA1に入力すると、セルE1〜N1にデータが現れる。

 これは、(3)と共通していて、

(3)セルA1に入力すると、セルE1〜N1に現れるのは、VLOOKUP関数で、 同一シート内に参照表がある。
 これは、A1セルに「1」と入力すると、E1〜N1セルに、それぞれVLOOKUP関数で得られる結果と同じ
 「文字列」などのデータで、VLOOKUP関数などの数式ではないということなのでしょうか?

でも、すると、

(2)セルE1〜N1を選択しても、データは何も入っていない。

とつじつまが合いません。

そうではなく、

(1)元々、セルE1〜N1には、データも数式も何も入っていない。
(2)セルA1に入力すると、セルE1〜N1にデータが入力される
 このセルE1〜N1に表示されるのは、別途入力される表を参照して、VLOOKUP関数で得られる結果と同等の内容のデータである(数式ではない)

ということでしょうか?
実際にE1〜N1セルには、「何も入っていない」のに、何かデータが現れるというのであれば、通常想定される使い方とまったく異なってくるので。そんなこと実際に可能なのか、という問題はありますが。

あと、Visual Basic Editorを開いてみたとき、自分で開いた覚えのないファイル名が左上に表示されてないかもチェックしてみてください。
ご確認有難うございます。
他のセルに数式を設定するなどの、セル外部に対して作用をもたらす操作は
手動操作かマクロ(VBA)を利用しないと普通は実現出来ないので、
ご提示いただいた状況を考えると、どこかに転記するコードがあるはずです。

が、確認しても見当たらないとなると、他にはパッと思いつきませんねぇ…。
私も他に状況に合致するものが無いか調べてみます。
何か思い付けばまたここに書きます。
>>[12]

コメントありがとうございます。

ご質問の件ですが、

>そうではなく、

>(1)元々、セルE1〜N1には、データも数式も何も入っていない。
>(2)セルA1に入力すると、セルE1〜N1にデータが入力される
> このセルE1〜N1に表示されるのは、別途入力される表を参照して、
>VLOOKUP関数で得られる結果と同等の内容のデータである(数式ではない)

>ということでしょうか?


(1)はその通りで、セルには何も入っておらず、
(2)については、セルE1〜N1に現れるデータは、数式で、
その数式の結果がセルには表示されます。

紛らわしい書き方をしてしまい、申し訳ありませんm(__)m



それから、

>あと、Visual Basic Editorを開いてみたとき、自分で開いた覚えのないファイル名が左上に表示されてないかもチェックしてみてください。

あ、自動的に何かが開いた可能性もあるかもしれないってことですね…。
くどいくらいに、どのファイルのシートか、モジュールかを確認しながらしていましたが、
確かに、そういう確認はしていませんでした。
明日会社で見てみます。

ありがとうございます。
>>[13]

ありがとうございます。

何か思いつくことがありましたらよろしくお願いいたします。


私自身、手探りでやっているような状態なので、
もしかしたら、何かを見落としている可能性もあります…

皆さんが書かれたことを勘違いしていないか、
いろいろ考えてみます。
以下のコードは現在のブック(のアクティブなVBAプロジェクト)に
含まれるVBAコードをイミディエイトウィンドウに出力するものです。
もし隠れたコードがあるなら、実行する事で
見当たらなかったコードが見つかるかも知れません。


'[オプション]-[セキュリティ]-[マクロセキュリティ]で
'[Visual Basicプロジェクトへのアクセスを信頼する]チェックを有効にしておく必要あり
Sub CodeDumper()
For Each a In Application.VBE.ActiveVBProject.VBComponents
Debug.Print ">>" & a.name & "<< (" & a.Type & ")"
With a.CodeModule
For i = 1 To .CountOfLines
Debug.Print .Lines(i, 1)
Next i
End With
Next a
End Sub
こんにちは。

数式の自動適用機能かなと思いましたが、A1セル(1行目)ということであれば、違うみたいですね。もしくは、1行目でも、数式の自動適用機能を使うやり方があるのかな?

(参考)
数式の自動適用機能について
http://office.microsoft.com/ja-jp/excel-help/HP005229125.aspx
>>[12]


>あと、Visual Basic Editorを開いてみたとき、自分で開いた覚えのないファイル名が左上に表示されてないかもチェックしてみてください。

について、本日会社で確認しましたところ、
開いているVBAProjectの上にある、VBAProject (******.XLSB)を開こうとしたところ
パスワードを要求されました。


ここは何か関係ありますでしょうか?
(パスワードについては、入手可能かどうかが不明なのですが…)
>>[16]

ありがとうございます。
明日確認してみます。
>>[17]

コメントありがとうございます。

明日確認してみます。

一瞬、これだ!と思ったのですが、考えてみるとちょっとアヤシイ部分も…。
そろそろ来月分のファイルを用意しなければならないので、
ついでに確認してみます。

>>[18]

おっ、どうやら怪しげなヤツがいますねぇ。でも、拡張子が「XLSB」ですか? 確か、2003をお使いのはずだたったと思いますが、2007形式のファイルが開かれているようですね。

ただし、その正体は、何かのアドインファイルかもしれないですね。全部、アドインがオフになっているか確認してみるといいでしょう。すべてオフにしても、そいつが表示されるようなら、そのファイルが怪しいですね。「XLSTART」フォルダ辺りに収録されていて、Excelの起動と同時に背後で開かれるようになってるとか。
>>[021]

すすす、すみませんあせあせ(飛び散る汗)

拡張子、書き間違えてましたー。
いろいろメモをとってたので、こちらにコメントを書く時に間違えてしまったみたいです。

えっと、正しくは、.xla です。

あと、今日会社で、まじんさんが書いてくださったことを見てみたいと思います。
>>[022]
>正しくは、.xla です。
これは、まじんさんが仰るようにアドインファイルですね
みなさま、大変お騒がせいたしました m(__)m

結論から申しますと、aozoramameさん の書かれていた数式の自動適用機能でした。

私が、ちゃんとエクセルを理解してたら、こんな大騒ぎにならなかったのに、と
穴を掘って逃げようかなとか、ただいま思っているところです…

その他みなさまの書いてくださったことも、それぞれ試しましたので、
以下一つずつお返事させてくださいませ。
>>[16]

書いてくださったコードを実行してみましたら、
元々あったマクロのコードと、この実行したコード、それから

>>ThisWorkbook<<(100)
>>Sheet1<<(100)
(以下、シートの数分あり)

というものが表示されました。


…ということは、隠れたコードというものは無かったということなのでしょうか。
>>[17]

ありがとうございました。

問題の、数式の自動適用機能、のチェックを外したら、セルに入力してもデータが現れませんでした。
そして、チェックを入れ直すと、ちゃんと入りました…。

>A1セル(1行目)ということであれば、違うみたいですね。もしくは、1行目でも、数式の自動適用機能を使うやり方があるのかな?

と書かれてますが、まさかこういった機能があるとは思っておらず、
説明するのに1行目としてしまいました…

コメントをくださって、本当に助かりました。
>>[21]

アドインのチェックを外してみましたら、
このファイル名も消えました。

おそらくなんらかのことをしているとは思いますが、
パスワード設定されているため、私では現在、中まで確認することまでできません。
(とても興味はありますが……)
>>[23]

拡張子の「.xla」というのは、アドインファイルなのですね!

本当に、奥が深いです…
ということで、
原因は判りましたが、この、数式の自動適用機能というのは、確実に数式が入るわけではないのでしょうか…。

いっそのことチェックを外してしまったほうが、
まぎらわしくなくて良いかなとか思いつついます…

あらためまして、いろいろお知恵をお貸しくださった皆さま、
本当にありがとうございました。

お手間をとらせてしまったことを申し訳なく思いつつ、
私自身の知らないことを新しく知ることができ、大変うれしく思っております。

ありがとうございました m(__)m
>>[26]

とりあえず、解決できてよかったですね。
私も数年前に人が作ったExcel表で同じような事例に遭遇し、戸惑ったことがあったので、コメントさせていただきました。
数式の自動適用機能は、まぁ、便利といえば便利ですが、この機能を知らないとホントに戸惑いますよね。

>数式の自動適用機能というのは、確実に数式が入るわけではないのでしょうか…。
私の経験では、新たに手入力したデータが上の行のセルと違った種類のデータを入力した場合(上の行のセルには数字が入っていて、次の行のセルに文字を入力した場合など)などは、適用されないようですね。
>>[30]

ありがとうございます。

謎は解けましたが、問題はそのまま、なんですけどね(苦笑)

すべてが入ってなければコピーも簡単なんですが、歯抜け状態なので面倒なんです。
まあ、一気にコピーしても問題ない箇所ではあるんですが…

もう少し効率の良い方法がないか、しばらく闘わねばならないようです…

それにしても、エクセルって、いろいろできますね。
奥の深さに驚きっぱなしです。
>>[25]
既に解決されたようですが、その出力内容でしたら隠れたコードは無いと言えます。
私の方で数式の自動適用機能の振る舞いについて十分に把握しておらず、
お役に立つどころか余計なお手間を取らせてしまい申し訳ございません。。。
(先頭行でも効くんですね…)

まぁ、解決されたようで良かったです。
>>[32]

わぁっ[m:78]
違うんですー。
先頭行じゃなかったんです[m:78]

上の行の数式をコピーしてくれるような機能があると思ってもいなかったので、
とりあえず説明するために、1行目にしてしまったんです…

恥ずかしながらデータをきちんと確認したのも、数式の自動適用機能について教えていただいてからで…
どうも、新しい月用にデータを用意する際には、最初のほうの数行は数式をコピーしていたようです。


本当に、考えが足りなくて、Minonさんはじめ、皆さまにはご苦労をおかけいたしました。
でも、いろいろ教えていただいたことは、これからの仕事にも役立てられそうです。


ありがとうございました。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Excel(エクセル)活用 更新情報

Excel(エクセル)活用のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。