- 締切済み
エクセル教えて下さい。ちょっと複雑です。
A1セル:空欄,A2セル:東京の初期状態であったとします。A1セルに●を入力し、データセーブ後にA1セルの●を消します。そうすると、A2セルの東京が大阪に変わる。 A1セル:空欄,A2セル:大阪の初期状態であったとします。A1セルに○を入力し、データセーブ後にA1セルの○を消します。そうすると、A2セルの大阪が東京に変わる。 どちらの条件も共に満たしているデータをエクセルで作りたいのですが、良い方法はないでしょうか? エクセルは2000を使用しています。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- mt2008
- ベストアンサー率52% (885/1701)
恐らく本当にやりたい事とは違うんだろうなぁと思いつつ、やって見ました。 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)
No1の方と同じですが、結局、粗笨されたデータは A ● 東京 セーブ A ○ 大阪 セーブ >どちらの条件も共に満たしているデータをエクセルで作りたいのですが 操作の順番を問わなければ、簡単な関数で可能ですが、何か問題があるのでしょうか?
- BookerL
- ベストアンサー率52% (599/1132)
たしかに「ちょっと」?複雑ですね。 A1 が空欄で、A2 の内容が "東京" A1 に "●" を入力 データセーブ A1 を消去 という条件の時のみ、A2 の内容が "大阪" に変わるのですね。 例えば A1 が空欄で、A2 の内容が "東京" A1 に "●" を入力 A1 を消去 (途中でデータセーブなし) とか A1 が空欄で、A2 の内容が "東京" A1 に "●" を入力 A1 の内容をいったん "○" に変更 データセーブ A1 を消去 といった内容では A2 の内容は "東京と" のまま変更しない、ということでよろしいでしょうか。 ということは、「データをセーブした」という情報をどこかに保存しておかないといけませんので、マクロで Workbook_BeforeSave のようなイベントでどこかにデータ保存することになります。それも A1 が空欄で、A2 の内容が "東京" であり、その後 A1 に "●" を入力した というあとのセーブである、という情報として保存することになります。 今回の質問は、ホントにしたいことではなく、たとえを使っておられると思われますので、ここで本気になってマクロを考えても、後出し条件が出てきそうなので、やめておきます。(そうでなくても、このような条件で私の力でマクロを組めるかどうかわかりませんが) なぜそのようなことをなさりたいのか、ということをある程度わかるように書いていただければ、別のアドバイスがあるかも知れません。