- ベストアンサー
エクセルのシート上でセルのデータの移動
エクセルのA列のA1,A2,A3...には選手人名 が入っています。 例えばA2(田中選手)の相手となる選手名(山本 選手)をA19列から持ってきてB2にセットしたいのです。 ドラッグアンドドロップ的にB列にA列から移動したい のです。左上中白矢印ポインターを出して移動できる のは判りますが、左上中白矢印を出すのが確実に 行かないことがあるので、中白十字状態でドラッグアンド ドロップ出きるか、A19をクリックし後にB2をクリック するとA19の内容がB2に移るようにするには、VBAを どう組めば良いのでしょうか。教えて下さい。
- imogasi
- お礼率53% (43/81)
- Visual Basic
- 回答数4
- ありがとう数0
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
2つ考えてみました。 <その1> 最初は普通に選択し、次の貼り付けるセルはCtrlキーを押しながら選択します。 作業をするシートのコードウインドウに貼り付けます。 Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) Dim kammaPot As Integer 'カンマ位置 Dim rg1 As Range, rg2 As Range '最初に選択したセルと次に選択したセル On Error GoTo ErrorHandler If Target.Count = 2 Then 'セルを2個選択している場合 kammaPot = InStr(Target.Address, ",") Set rg1 = Range(Left(Target.Address, kammaPot - 1)) Set rg2 = Range(Right(Target.Address, Len(Target.Address) - kammaPot)) rg2.Value = rg1.Value rg1.Value = "" rg2.Select End If Exit Sub ErrorHandler: End Sub -------------------------- <その2> 次は、質問のとおりにA、B列でのみ処理をするケースです。 作業をするシートのコードウインドウに貼り付けます。 なお、2つ同時には登録できません。 Dim AiteSensyu As String 'A列の選択した選手名 Dim AiteSensyuAddress As String 'A列の選択した選手の行 Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) On Error GoTo ErrorHandler If Target.Count = 1 Then If AiteSensyu <> "" Then '選手の選択が済んでいる場合 If Target.Column = 2 Then 'B列 Target.Value = AiteSensyu Range(AiteSensyuAddress) = "" '選択した選手のセルをクリア AiteSensyu = "" '選択した選手をクリア End If Else If Target.Column = 1 Then 'A列 AiteSensyu = Target.Value '選択した選手を記憶する AiteSensyuAddress = Target.Address '選択した選手のセル番地 End If End If End If Exit Sub ErrorHandler: End Sub
その他の回答 (3)
- TAGOSAKU7
- ベストアンサー率65% (276/422)
要はセル情報の移動の簡略化を行いたいわけですよね。 確かに#2さんの発言にあったように、コピペがベストかも? 右手はマウス 左手は[Ctrl+C][Ctrl+V]を押す。 これの繰り返しがいいとは思うのですが。。。 もしどうしてもVBAで行いたいのであれば、結構制限があります。 EXCELの仕様から認識できるイベントが少ないからです。 一応サンプルを作りましたが、これはダブルクリックでセル情報を取得し、右クリックで貼り付けるプログラム(マクロ?)です。 常にダブルクリックはコピー/右クリックは貼り付けとなるために、エクセル標準のダブルクリックで編集モード、右クリックでポップアップメニューが使えなくなってます。 ですので、コピペモードと、エクセル本来のモードを切り分けるフラグを標準モジュールでフラグを宣言し、実行/解除ボタンも用意しておく事を勧めます。 以下のソースを、標準モジュールではなく、シートのモジュールに貼り付けてください。 Option Explicit 'Rangeオブジェクト変数 Private pRange As Range Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'クリックの操作無効(この場合ダブルクリックによるセルの編集モードが無効) Cancel = True 'アクティブなセルを、変数にセット With Target Set pRange = Cells(.Row, .Column) End With End Sub Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) 'クリックの操作無効(この場合右クリックによるメニューの表示が無効) Cancel = True '貼り付けるものが無い時、未処理 If pRange Is Nothing Then MsgBox "移動するセルが指定されていません" Exit Sub End If 'セルを切り取って貼り付け pRange.Cut With Target Cells(.Row, .Column).Select End With Paste End Sub
- tamagawa49
- ベストアンサー率46% (123/265)
>VBAをどう組めば良いのでしょうか。教えて下さい。 VBAでは無理じゃないですかね。同じクリックする動作の1回目(切り取り)と2回目(貼り付け)に差をつけるわけですから、その途中にはマクロの実行ボタンを押さなければダメですよね。 自動で切り取れる方法も試してみたんですけど、例えば普通のモジュール1でなく、シートの方にあるWorksheet_SelectionChangeイベントでもセルをクリックすると1回目は「切り取り」になるんですが、2回目に貼り付け先のセルをクリックした瞬間、当然のことですがそのセルを切り取ってしまい貼り付けることができませんでした。 imogasiさんがご存知の(確かにいらいらしますが)マウスで移動する方法が一番早いのではないでしょうか。 ちょっと遅いですが、私ならば右クリック「切り取り」→「貼り付け」を使うかもしれませんね。参考にならなくてすみません。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
意味がよく理解できていません。 移動用のマウスカーソル状態以外でも、マウス操作でセルの内容を移動したいという事ですか?
関連するQ&A
- Excel エクセル 2003 セル内のデータ移動 マクロ?
データはE6からE297まであります。 E7のデータをD6へ、E9のデータをD8へ下に、これを最後まで行いたいのです。 ドラッグアンドドロップや切り取り、貼り付け(ショートカット)では時間がかかるので何かいい方法はありませんでしょうか?(マクロなのかな?) また、E列だけでなく他の列(任意)へ移動したときや、E17などのように任意から始まるときなど、そしてEデータが297ではなくもっと増えたときなどの対応などをあわせてお教えいただくとうれしいです。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルで2つ以上の条件から値を抽出し、任意のセルに反映させる方法
A列にすべて異なる数値データがランダム入力されていて、B列に複数名の氏名が入力されている大きなデータがあります。(同一名の重複を含む。)B列から同一名の者を抽出した上で、A列にランダムに表示される数値のうち一番大きい数値をC列に反映させたいのですが、VBAなどで自動抽出は可能でしょうか?ご教示よろしくお願いします。 A B C 2 田中一郎 7 7 田中一郎 7 1 田中一郎 7 4 山本桂子 8 8 山本桂子 8 3 山本桂子 8
- ベストアンサー
- オフィス系ソフト
- エクセルでこのような事ができますか?
エクセルでマクロとか使わずに簡単に以下の作業ができる方法がありますか? A B 1 田中 2 山本 3 中村 4 岡田 5 鈴木 ↓ A列にずっと1000人ぐらいの名前がある。 このシートをもとに下のような1から6の番号をB列につけたシートを 作りたいのですが・・・ A B 1 田中 1 2 田中 2 3 田中 3 4 田中 4 5 田中 5 6 田中 6 7 山本 1 8 山本 2 9 山本 3 10 山本 4 11 山本 5 12 山本 6 13 中村 1 14 中村 2 ↓ 6000行まで入ることになります。
- ベストアンサー
- オフィス系ソフト
- エクセルシート間の照合について
エクセルシート間で照合をしたいと思っています。 照合する項目は2つ。2つともあえばそのA列のデータを表示するというものです。 データは シート1(前年) A B C D 1 田中 123 東京都・・ 5 佐藤 124 千葉県・・ 3 山本 128 埼玉県・・ シート2(今年) A B C D 山本 128 埼玉県・・ 佐藤 124 北海道・・ 田中 123 東京都・・ C列とD列を照合し2つともあえばシート2のA列にシート1のA列のデータを入力する。なければ「なし」と入力できるようにしたいのです。 上の場合は山本のA列に「3」佐藤には「なし」田中には「1」と入るのうになればと思います。 入力されている列は同じですが順番はばらばらです。データ数は1万件を超えています。 どなたかアドバイスいただければと思います。よろしくお願いします。
- ベストアンサー
- その他([技術者向] コンピューター)
- エクセル データの移動(スライド)
例えば下記の並びで A B 1234 5678 4321 8765 8765 3210 このB列のデータを左に(A列に)スライドする方法は ありますでしょうか? これが何百というデータがあると 1個1個削除で左に移動ってやるのが 手間なので数式とか何かいい方法があると、 非常に作業効率があがるんですが。。。 一応、等間隔で空いてはいますが、使えますでしょうか。 どなたか、教えてください。 宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセル2007 同一データが連続したセルの結合について
はじめて投稿させていただきます。 うまく説明できるかどうか判りませんが、よろしくお願いします。 エクセル2007 で以下のような結果を得られるようなマクロを作りたいと考えています。 横方向にA列~C列の3つの連続したセル内容が同一で縦方向に2つ以上連続した場合のみ、それらの行を結合させたいのです。具体的には下図のような感じです。 何かよい方法があればアドバイスいただきたいと思います。どうかよろしくお願いします。 A列 B列 C列 D列 機種 区分 ユーザー名 納品数 ABC あああ 田中商店 10 ABC あああ 田中商店 20 ABC あああ 田中商店 30 XYZ いいい 田中商店 25 XYZ ううう 山田商事 40 ↓ ↓ ↓ ↓ ↓ A列 B列 C列 D列 機種 区分 ユーザー名 納品数 10 ABC あああ 田中商店 20 30 XYZ いいい 田中商店 25 XYZ ううう 山田商事 40
- ベストアンサー
- その他MS Office製品
- EXcelでセルを移動
EXCELでセルを移動させるにはどうすればいいでしょうか。教えてください。(A1のセルをB2へ移動させる) 例) A1セル 5678 A2セル 1234 ⇒ A2セル B2セル 1234 5678 移動したいセルの量がかなり多いので単純に移動したいセルを指定してドラッグして移すのが大変なんです。 よろしくお願いします。
- 締切済み
- オフィス系ソフト
- Excelのセルのデータの移動について教えてくださ
Excelの文書名(A)の「シート見出し3」のセルA1のデータを、デスクトップのExcelの文書名(B)のセルA1移動できるでしょうか。 もし、できる場合、文書名(B)に既に6行分のデータが存在しているときはセルA7に移動あるいは、既に7行分のデータが存在しているときはセルA8に移動できるでしょうか。 お教え頂けたら幸いです。よろしくお願いいたします。
- 締切済み
- その他(プログラミング・開発)
- Excelでセルの移動をするとコピーされてしまう
Excel2007を使用しています。 セルのデータをドラックアンドドロップで移動すると移動元にデータが残ったままになってしまいます。 切り取りで移動しても移動元にデータが残ったままになってしまいます。 複数セルデータを移動する際に境目が分からなくなり困っています。 過去ログ等、探しましたが解決できず、質問させていただきます。 なにか設定などがあるのでしょうか?
- 締切済み
- オフィス系ソフト
- EXCEL データの移動作業について
OCRでデータを読み込み、エクセルに送って表にする作業をしています。取り込み方が難しく、エクセルに情報を送った後、そのデータを違うセルにドラッグで移動するという作業が必要になっています。すごく手間がかかるし、データは大量にあるので何かの機能を使って作業を短縮できないかと思ったのですが、教科書を見てもアイデアが浮かびません。何かよい案をご存知でしたら教えていただけませんでしょうか。 作業内容:例 Aの列に来るデータ、Bの列に来るデータ、Cの列に来るデータが順番にAの列に一列に並んでしまいます。これをそれぞれの列に、行がずれないように移動します。 *取り込んだときは、全てAの列に縦一列で A1 A2 A3 B1 B2 B3 C1 C2 C3 A4 A5 A6・・・(どんどん続く)というふうに並んでいます。 *作業後は、 A1B1C1 A2B2C2 A3B3C3 A4B4C4 A5B5C5・・・というふうに並べ替えたいんです。 わかりにくくてすみません。宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
補足
太いプラスのポインターから中が空白の矢印ポインターに変えるのに、ワンステップ、ツーステップ操作が必要だったり、上手く矢印ポインタに変えにくいことが多いので、クリックしてドラッグか、ポイント(fromから)して別のセルをポイント(toへ)して確実に移動したいためです。よろしく。実際例は選手の組み合わせでなく、多量に組み合わせるべきデータがあるため確実に迅速に操作を進めたいのです。