• 締切済み

Excel・・・ある一文字を入力したら他のセルへデータ移動

Excelでデータを日々更新していますが、 あるひとつのセルにたくさんの商品データが入っていまして、 そのなかの一商品が完売し、データ上では必要なくなったので 同じファイルの他のシート(完売商品という名前のセル)に、 セル番地A1からセル番地A6まで商品詳細を入力したデータを、 A7に「完売」の頭文字「K」を入れた時点で 瞬時に移動させたいのですが、そんなことができる関数って ありますか?

みんなの回答

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

#02です 行、列があべこべだったなら、完売サインを入力する列が何列になるのかを書いて欲しかったところですが、7列目(G列)と想定してマクロを書きました 以下のマクロを商品データシートの「シート名右クリック」→「コードの表示」で開く画面に貼り付けてください。 商品データシートに戻り、G列に「K」もしくは「K」を入力すると、その行のA列からF列のデータを完売シートに転記し、商品データの行は削除します。複数行まとめて「K」を入力してもOKです Private Sub Worksheet_Change(ByVal Target As Range) Dim r, trg As Range  Set trg = Intersect(Target, Columns("G"))  If trg Is Nothing Then Exit Sub  On Error GoTo end0  For Each r In trg   With r    If .Value = "K" Or .Value = "K" Then     Cells(.Row, 1).Resize(1, 6).Copy _       Destination:=Sheets("完売商品").Range("A65536").End(xlUp).Offset(1, 0)    End If   End With  Next r  Application.EnableEvents = False  trg.EntireRow.Delete end0:  Application.EnableEvents = True End Sub もし完売サインを入力するのがG列ではない場合は、マクロの3行目の列指定を正しい列名に変更して下さい なお#01さんが指摘されているように、マクロの実行結果は「Undo」でも元に戻せません。誤って別の商品に完売サインを入力すると元に戻すのが大変になりますよ。私も本当はオートフィルタで表示させないようにする方をお勧めしたいです

kujira4488
質問者

補足

再度、ありがとうございます! コピーして、貼り付けてみましたがその後、どうやって 画面を閉じたらいいのでしょう?保存して反映させるのですか? マクロっていうのはエクセルの何でしょうか? 裏画面みたいなものですか?質問ばかりで すみません・・・

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

>あるひとつのセルにたくさんの商品データが入っていまして 一つのセルにですか?? シートにではないですか。 それはさておき、このシートは列単位に商品データが入力されているのですか(商品1はA列、商品2はB列という具合)。 なんか変な表ですね。OFFICE2003までなら列数は256しかありませんから、これでは完売商品が256を越えたらシートを分けなくてはならなくなりますよ 行単位に商品データを入れるのが一般的だと思うので確認です。 シートの作りを再度見直されたらいかがでしょうか 要望自体はマクロで実現は可能ですから、質問し直してもらえればマクロを書くこともできると思います

kujira4488
質問者

補足

間違いました、シートにデータを入力しているんです・・。 列単位でなく行単位でした、たびたびすみません・・・。 マクロって馴染みがないのですが難しそうなイメージが あります・・・ ただ、前の回答者様も「関数でデータの移動を行うことは できない」とおっしゃっていましたので、 マクロしかないのだと思いますが・・・

  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.1

>瞬時に移動させたいのですが、そんなことができる関数って ありますか 関数で、データーを動かすと云う事はできません やるとすれば、マクロ(VBA)を使う事になりますが、 この様な場合は、あまり適当な方法じゃないと思います 例えば、間違って違う商品に"k"と入れてしまうと、すぐに移動してしまい それを、直すのに、手間が余計に掛かります "k"をキーワードに、並べ替え、非表示設定、色替え..などで対応する方が 良いのではないかと思います

kujira4488
質問者

補足

回答ありがとうございます。 そうですか、瞬時に動かすという関数はないのですね。 これだけでもチョットすっきりしました。 マクロを使用するとしても、「完売」と思った商品が 間違えて入力していたとなると直すことがやっかいなんですね? それならば、瞬時でなくともいいのでデータの移動を 手動以外の方法でできませんか? 移動でなくとも、コピーでも良いですが・・・・

関連するQ&A