電子書籍の厳選無料作品が豊富!

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

A 回答 (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」でも元に戻せません。誤って別の商品に完売サインを入力すると元に戻すのが大変になりますよ。私も本当はオートフィルタで表示させないようにする方をお勧めしたいです

この回答への補足

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

補足日時:2007/07/14 11:54
    • good
    • 0

>あるひとつのセルにたくさんの商品データが入っていまして


一つのセルにですか?? シートにではないですか。

それはさておき、このシートは列単位に商品データが入力されているのですか(商品1はA列、商品2はB列という具合)。

なんか変な表ですね。OFFICE2003までなら列数は256しかありませんから、これでは完売商品が256を越えたらシートを分けなくてはならなくなりますよ

行単位に商品データを入れるのが一般的だと思うので確認です。
シートの作りを再度見直されたらいかがでしょうか

要望自体はマクロで実現は可能ですから、質問し直してもらえればマクロを書くこともできると思います

この回答への補足

間違いました、シートにデータを入力しているんです・・。
列単位でなく行単位でした、たびたびすみません・・・。

マクロって馴染みがないのですが難しそうなイメージが
あります・・・
ただ、前の回答者様も「関数でデータの移動を行うことは
できない」とおっしゃっていましたので、
マクロしかないのだと思いますが・・・

補足日時:2007/07/12 21:30
    • good
    • 0

>瞬時に移動させたいのですが、そんなことができる関数って


ありますか

関数で、データーを動かすと云う事はできません
やるとすれば、マクロ(VBA)を使う事になりますが、
この様な場合は、あまり適当な方法じゃないと思います

例えば、間違って違う商品に"k"と入れてしまうと、すぐに移動してしまい
それを、直すのに、手間が余計に掛かります

"k"をキーワードに、並べ替え、非表示設定、色替え..などで対応する方が
良いのではないかと思います

この回答への補足

回答ありがとうございます。
そうですか、瞬時に動かすという関数はないのですね。
これだけでもチョットすっきりしました。
マクロを使用するとしても、「完売」と思った商品が
間違えて入力していたとなると直すことがやっかいなんですね?

それならば、瞬時でなくともいいのでデータの移動を
手動以外の方法でできませんか?
移動でなくとも、コピーでも良いですが・・・・

補足日時:2007/07/12 21:27
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!