• 締切済み

エクセル教えて下さい。ちょっと複雑です。

A1セル:空欄,A2セル:東京の初期状態であったとします。A1セルに●を入力し、データセーブ後にA1セルの●を消します。そうすると、A2セルの東京が大阪に変わる。 A1セル:空欄,A2セル:大阪の初期状態であったとします。A1セルに○を入力し、データセーブ後にA1セルの○を消します。そうすると、A2セルの大阪が東京に変わる。 どちらの条件も共に満たしているデータをエクセルで作りたいのですが、良い方法はないでしょうか? エクセルは2000を使用しています。

みんなの回答

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

恐らく本当にやりたい事とは違うんだろうなぁと思いつつ、やって見ました。 Sheet2をバッファ代わりに使用します。 Sheet2のA1:Sheet1のA1が更新されるとここに同じ値が入る Sheet2のA2:Sheet1のA2に表示される文字列に対応した記号 Sheet2のA3:Sheet1のA1が空白以外に更新された後、SaveされたかどうかのFLAG ついでにSheet2のA5:B7に記号と文字列の対応表を作ります。 #添付画像参照のこと そして、Sheet1のA2に↓の式を入れます。 =IF(Sheet2!A2="","",VLOOKUP(Sheet2!A2,Sheet2!A5:B7,2,FALSE)) 次にマクロ Sheet1に↓ Private Sub Worksheet_Change(ByVal Target As Range)  '*** A1 以外は無視  If Target.Address <> Range("A1").Address Then   Exit Sub  End If  '** A1が空白でないなら、Save済みFLAGを落とす  If Target <> "" Then Sheets(2).Range("A3") = 0  '** Save済みFLAGが立っている場合、変更前のA1文字列をSheet2のA2に代入  If Sheets(2).Range("A3") = 1 Then   Sheets(2).Range("A2") = Sheets(2).Range("A1")  End If  '** 変更後のA1文字列をSheet2のA1に代入  Sheets(2).Range("A1") = Target End Sub ThisWorkbookに↓ Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)  '** 現在のA1の値が空白で無いなら、Svae済みFLAGを立てる  Sheets(2).Range("A3") = 0  If Sheets(2).Range("A1") <> "" Then Sheets(2).Range("A3") = 1 End Sub 何かの参考になれば幸いです

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

No1の方と同じですが、結局、粗笨されたデータは  A  ● 東京 セーブ  A  ○ 大阪 セーブ >どちらの条件も共に満たしているデータをエクセルで作りたいのですが 操作の順番を問わなければ、簡単な関数で可能ですが、何か問題があるのでしょうか?

  • BookerL
  • ベストアンサー率52% (599/1132)
回答No.1

 たしかに「ちょっと」?複雑ですね。  A1 が空欄で、A2 の内容が "東京"  A1 に "●" を入力  データセーブ  A1 を消去  という条件の時のみ、A2 の内容が "大阪" に変わるのですね。 例えば  A1 が空欄で、A2 の内容が "東京"  A1 に "●" を入力  A1 を消去  (途中でデータセーブなし) とか  A1 が空欄で、A2 の内容が "東京"  A1 に "●" を入力  A1 の内容をいったん "○" に変更  データセーブ  A1 を消去 といった内容では A2 の内容は "東京と" のまま変更しない、ということでよろしいでしょうか。  ということは、「データをセーブした」という情報をどこかに保存しておかないといけませんので、マクロで Workbook_BeforeSave のようなイベントでどこかにデータ保存することになります。それも  A1 が空欄で、A2 の内容が "東京" であり、その後 A1 に "●" を入力した というあとのセーブである、という情報として保存することになります。  今回の質問は、ホントにしたいことではなく、たとえを使っておられると思われますので、ここで本気になってマクロを考えても、後出し条件が出てきそうなので、やめておきます。(そうでなくても、このような条件で私の力でマクロを組めるかどうかわかりませんが)  なぜそのようなことをなさりたいのか、ということをある程度わかるように書いていただければ、別のアドバイスがあるかも知れません。

関連するQ&A

  • エクセルで空欄と0について

    たとえばIF関数を使って、セルA3に IF(A1=1,A2,"") と入力、A1が1でA2が空欄(データがない状態)の場合、A3には空欄ではなく0が表示されるんですがなぜでしょう。また、0ではなく空欄を表示してほしいのですが、どうすればいいのでしょう?

  • エクセルのIF式教えて下さい。

    何度やっても上手く思うように行きません。 IF式の組み立て方が悪いのか? AND、ORの使い方が悪いのか? お手上げの状態です。 質問は、2つのパターンです。 助けて下さい。 質問1 セルA1にデータ10と入力 セルA5にデータ5と入力 セルA9に大きい値の10を表示させ、セルA1が空欄の時は、空欄にしたい。 セルA10に小さい値の5を表示させ、セルA5が空欄の時は、空欄にしたい。 質問2 セルB2に1を入力 セルC2に1を入力 セルD2に両方が1以上ならOK、それ以外ならNGと表示させたい。 以上の2つの質問のIF式を教えて下さい。

  • エクセルの文字の置き換えについて

    エクセルの置き換えについて セルに「1」と入力すると、○「まる」に、入力されないセルは空欄のままにしておく方法を教えてください。 よろしくお願いします。基本tきなことですみません。

  • エクセル 数式について教えてください。

    エクセルの数式について教えてください。 教えてください。たとえばA1のセルが1000、B1のセルが500でC1のセルに=B1-A1と入力します。そうすると 500と表示されます。これはこれでいいのですがたとえばA1に1000入力しB1が空欄だとC1にはA1セルの1000が入力されます。 A1だけのセルに1000と入力した場合にC1には空欄か#DIV/0見たいなエラーメッセージをさせたいのですがどうすれば よろしいでしょうか?

  • Excel 2003 関数のネスト

    申し訳ありません。 どなたか教えて下さい。 Excel 2003におきまして、このような流れの仕組みを作りたいと考えております。 とあるセルに○が入力されていて、かつ、別なセルにA~が入力されている数をカウントしたい。 要するに、○が入力されていて、さらに特定の文字を含むという条件が同時に満たされたセルの数をカウントしたいのです。 どなたかお願いします!!

  • エクセル2010の質問です。

    エクセル2010の質問です。 画像のようにセルに文字が挿入されている場合に、条件に合ったセルの文字を○で囲む(または、○が文字の上に重なる)ようにする方法を教えてほしい。 文字が入力されたセルに条件式を入力すると、文字自体が消えてしまって使用しようとしている目的が達成できないので、よろしくお願いします。

  • エクセル 文字列を足す方法

    こんにちは。 エクセル2003を使用しています。 文字列の足し方を教えてください。 A1:東京 B1:大阪 C1:東京大阪 ← 左記の出力結果を出したい。 C1セルに入力する数式はどのようにすればよろしいでしょうか。 お手数ですが、よろしくお願いいたします。

  • Excelの関数COUNTIFについて

    ExcelにCOUNTIFを設定しています。 セル範囲【D9:Y9】には、 ○、△、×のいずれかが入力されています。 A9が空欄でなければ、○の数をカウントするには、 以下の数式でOKでした。  =IF(A9="","",COUNTIF(D9:Y9,"○")) この数式を○か△であればカウントするような数式に 変更したいのですが、なかなかうまくいきません。 ORを組み合わせればいいのでしょうか・・・ Excelのバージョンは2003です。 よろしくお願いいたします。

  • エクセルで空欄を探して入力する関数は?

    エクセルでシート2のどのセルに入力してもその入力した値がシート1上でA1からA2・・・と順にもし、A1が空欄でなければ空欄の次のセルに入力する、という風な関数、方法を教えてください。

  • エクセル シートのリンク

    エクセルの一つのシート(印刷用)に複数のシートからのデータを数式を使い反映できるようにしています。 あるシートに、AまたはCと入力するか、空欄のままにしておき、印刷用のシートにAかCを返すとともに空欄のセルにはBと入力できるようにします。この作業を1期、2期、3期と三回くり返します。1期を入力した場合には、2期3期の部分が空欄のままになり、2期を打ちはじめると印刷用のシートの2期の表にA,Cはそのまま返し空欄のセルにはBが返るようにできないものでしょうか。今の状態は2期3期を入力しないままにしておくと当然印刷用のシートにはBが表示されていまいます。できたらマクロを使いたくないのですが。いい方法があれば教えてください。

専門家に質問してみよう