• ベストアンサー

カレント行の○列目のセルの内容を別のセルに表示させたいんです。

Excelマクロについてお尋ねします。 アクティブなセルがある行の○列目の内容を別のセルに表示させたいのです。 コード 商品名 内容量 入数 金額 商品サイズ 箱サイズ JANコード ITFコード 商品説明(数十文字) が行方向に多数並ぶ表があります。 時々規格を調べる必要があり、検索語句をそのままオートフィルタにかけるマクロを組んで使用していますが、問題がひとつ。 横方向でも一画面に収まらない表ですので、数十文字も並んでいる「商品説明」を見るときにいちいちスクロールバーを操作するのがわずらわしくてなりません。 現在は A1=ADDRESS(CELL("row"),10) と A2=INDIRECT(A1) の組み合わせで上記の表のすぐ上にカレント行の商品説明の項目を9列分セルを結合させて表示していますが、いかんせん関数ですので、F9を押さないと内容が反映されないため、ミスの原因にもなりかねません。 たとえば、D1を選択していようがD8、D15を選択していようが、D10の値をA2に表示させるためにはどんなマクロをどこに記述すればよいのでしょうか?(sheet1に記述するのか標準モジュールに記述するのかもよくわかっていません) webで検索しましたがメッセージボックスを使用した表示方法しか見つかりませんでした。 もちろん、関数で対応できるのだとしてもOKです。

  • Oyadi
  • お礼率90% (36/40)

質問者が選んだベストアンサー

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

こんな感じでしょうか? ワークシートに以下のマクロを記述: Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim row As Range With ActiveSheet Set row = .Range("A" & CStr(Target.row)) .Range("A1").Value = row.Value .Range("B1").Value = row.Offset(0,1).Value End With End Sub

Oyadi
質問者

お礼

ありがとうございます。 これからそれぞれの記述の意味を調べて、モノにしたいと思います。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

>アクティブなセルがある行の○列目の内容を別のセルに表示させたいのです。 A列にキーとなる、データ(商品名とか)があって、 (例えば商品説明があるとして)をテキストボックスに表示する、ことを考えました。 A列以外をクリックするとテキストボックスが消えます。 指定列が下の方に行くとテキストボックスも移動します。 ワークシートのSheet1のSelectionChangeイベント プロシージュアーに貼りつけてやって見てください。 またSheet1に1つテキストボックスを貼りつけて 下さい。 ただ2セルを範囲指定するとエラーになったり、脆くて、実用に耐えるか心配で、お遊び程度のものかなと思いますが、何しろコード行数が少ないので作り易いです。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 1 Then 'A列なら Sheet1.TextBox1.Visible = True TextBox1.Text = Target.Offset(0, 8) 'I列を Else Sheet1.TextBox1.Visible = False End If Sheet1.TextBox1.Top = ActiveCell.Top + 10 End Sub

Oyadi
質問者

お礼

とっても面白いです。 惜しむらくはおっしゃるとおり、A列の複数セルの選択ができないことですね。A列のコードは連番になっているため、新アイテムの追加のときなどはオートフィル機能を使用したくなります。 しかし、教えていただいたマクロを使用していればワークシートのどの部分からもテキストボックス内を見ることができますので、他でも使用してみたいと思います。

関連するQ&A

  • 13行目のセルの値が0のとき、その列を非表示にする

    Windows7 Excel2007でマクロ作成中の初心者です。 13行目のセルの値が、0のときは、その列を非表示にするというマクロを作ろうとしましたが なかなか難しくておてあげです。探したら次のようなコードがでてきました。 ボタンを押すとK列の値を参照して「A」と表示されている行を隠し、「表示する」ボタンを押すと、 解除するという処理。 Option Explicit Private Sub Cmd隠す_Click()  Dim 行番号 As Long  '行を隠す  For 行番号 = 4 To 13   If Cells(行番号, 11).Value = "A" Then    Cells(行番号, 1).EntireRow.Hidden = True   End If  Next 行番号 End Sub Private Sub Cmd表示する_Click()  '表全体を再表示する  Cells.Select  Selection.EntireRow.Hidden = False  Selection.EntireColumn.Hidden = False  Cells(1, 1).Select End Sub このコードを利用して、13行目のセルの値が、0のときは、その列を非表示にするというコードにしたいのです。 よろしくおねがいします。

  • エクセル VBA 同じ内容のセルの行を合わせたい

    売上集計表があり、A列に全商品のコードが表示されてます。 毎日の売上商品のデータを商品コード別に数量を入力して同じ内容のセルの行の位置を合わせる作業を毎日行っています。 毎日の売上データはエクセルで集計されたデータを貼り付けて行っています。これをなんとかVBAで処理したいのですが、どうしたらいいのかわかりません。 内容としてはA列に全商品の商品コードが既に入力されています。 月のはじめは、B列とC列に一日の集計データそのまま貼り付けます。 A列の商品コードと同じ商品コードの行に合うまで空白のセルを挿入していきます。 次の日は、D列とE列、その次はF列とG列と右に貼り付けしていきます。 商品コードは約3000件、毎日の集計データ数は約500件です。 どうか教えてください。 完成例)   A列   B列   C列     D列    E列       F列    G列   H列   I列 商品コード    10/1分        10/2分            10/3分       10/4分・・・続く        商品コード 数量   商品コード 数量      商品コード数量 CZ1.000  CZ1.000   10    CZ1.000   20 CZ1.005                                CZ1.010  15   ←セルの挿入で CZ1.010  CZ1.010   30                    CZ1.020 30    下げる作業を CZ1.015                                CZ1.030  10 毎日行ってます。 CZ1.020  CZ1.020   11   CZ1.020    20       CZ1.040  40 CZ1.025 CZ1.030  CZ1.030   11   CZ1.030    10 よろしくお願いします。

  • Excelのあるセルの最終行のみ表示させたいです。

    Excelのあるセルの最終行のみ表示させたいです。  A     B     C      D 月日     入     出      残 10/1  1000   200    800 10/1    500   300   1000 10/1    200     0   1200 10/2   2000   500   2700 10/2    100     0   2800 このような表を 10/1    1200 10/2   2800 のように月日の最終行のD列のみ表示させたいのですが、どういう関数を使えばよいでしょうか?

  • エクセルで、該当する文字列がある行のみを残す方法

    はじめまして、初めての質問になります。 題名の通り、現在エクセルで関数を使い該当する文字列がある行のみを残す関数を探しているのですが、実際に登録してみるとうまく動くものが無かったので質問しました。 画像がうまく表示されるか不安なので記述すると セルのA2から下に数字があり、その数字に対していくつかの該当した番号がある行のみを 残す関数を探しております。 資材コード    品名 301140    パネル 301240    ソケット 360940 この様な表になります。 この中で、例えば 301140 360940 この2つ該当する数字がある行を残すマクロを探しております。 ぜひ教えていただければ幸いです。

  • セル内の2行をそれぞれ別のセルにコピーするマクロ

    A列にデータが入力されていたとします。 そのデータのうち、複数のセルで改行されて2行になっています。 改行されているセルをサーチし、1行目をB列のセルに、2行目をC列のセルに分割してコピーしたいと思います。 この様な方法は、マクロで可能でしょうか。 適切な関数があれば、ご教授いただきたいと思います。

  • 条件を満たす行の、特定の列における最小値

    以下のようなスプレッドシート(Excel)があります。    [A列] [B列] [C列] [D列] [E列] [1行]資材コード メーカー 単価 平均 最安 [2行]T1111 A 311 [3行]T1211 A 411 [4行]T1311 A 311 [5行]T1111 B 299 [6行]T1211 B 500 [7行]T1311 B 312 [8行]T1111 C 300 [9行]T1211 C 280 [10行]T1311 C 400 D列(D2~D10)には、 同じ資材コードの単価の平均が入ります。 これは、 SUMIF(A$2:A$10,A*,C$2:C$10)/COUNTIF(A$2:A$10,A*) (*には当該行番号が入る。) で、表現できました。 次にE列(E2~E10)には 同じ資材コードのもののうち、 最安となる単価を表示させたいのですが、 どう関数を組み合わせるのが、スマートなのかわかりません。 たとえば、E2セル、E7セル、E11セルは 資材コードT1111になっている行のうち、 単価(C列)が最低となる時の値を表示するようにしたいので、 C2セル=311、C7セル=312、C8セル=800のうち、最低である311が E2セル=311、E7セル=311、E8セル=311 にそれぞれ表示されるようにしたいのです。 わかりにくい説明で申し訳ありませんが、 疑義があれば、適宜補足しますので、指摘してください。 よろしくお願いいたします。

  • 列の中の一番下のセルの内容を特定のセルに移したい

    例えば、 A B C D E F 1 10 20 30 40 140 2 50 60 70 80 3 90 100 110 120 4 130 140 150 160 5 これらのようにセルが記録されているときには、 B4の内容をF1に表示させて、 5行目に 5 170 180 190 200 とデータが記録されているときには F1に「180」を表示させたいのです。 ちなみに数千行に渡るときにでも同様に一番下の行のデータを 特定のセルF1に表示させたいのですができるものでしょうか? F1の中のセルの関数もしくはマクロでもかまわないのですが、 ご教示いただければと思います。

  • エクセルで三行ごとのデータを1行ごとに表示させたい

    下のように三行ごとにあるセルを参照し、他のセルに一行ごとに表示する方法(関数、もしくはマクロなど)   A B C D 1 あ     あ 2       い 3        4 い 5 6 7 う 8 あるいはあるセルに入力されている数値を数式内の行、または列として指定する方法を探しています。 (たとえばA1に4、A2に3と入力されていたとき、B2でその数値を取得しC3の内容を表示する、といった感じです) 簡単そうなきがするのですが私の検索が悪いのか、見つけることが出来ませんでした。ご存知の方お願いします

  • エクセルの表を別のシートに2列で表示したい

    シート1のAセルに[商品名+番号]が入っていてBセルに値段が入っていて、 80行位並んでいます。 Aセル/Bセル 冷蔵庫1/50,000 冷蔵庫2/65,000 ・・・ 冷蔵庫8/73,000 洗濯機1/32,000 ・・・ D1セル 冷蔵庫 D2セル 洗濯機 ・・・ E1セル = =IF(D1="","",COUNTIF($A$1:$A$80,D1&"*")) E2セル = =IF(D1="","",COUNTIF($A$1:$A$80,D2&"*")) ・・・ このリストを別シートに2列で表示したいのですが、 (1)左右どちらに表示されてもかまわないが、冷蔵庫は冷蔵庫でまとめて同じ列に表示する (2)商品名や番号は追加されたり削除されたりするのでどの商品がいくつあるかはEセルで判断する (3)左右ほぼ、同じ位の行になるように商品を振り分ける。 としたいのですが、どのようにしたらいいでしょうか? マクロで構いませんので(他の方法は思いつかないです)アドバイス等でも結構ですので、教えてください。 何かわからない所があったら質問してください。 よろしくお願いします。

  • 二行二セルの内容を一つのセルにしたい(関数のみで)

          A                B 1 りんごの単位は     りんごの単位は個 2 個              テレビの単位は台 3 テレビの単位は     雑誌の単位は冊 4 台 5 雑誌の単位は 6 冊 A列にある問い(必ず奇数行)と答え(必ず偶数行)を B列上詰めで一つにする関数を探しています。 B1セルに「=A1&A2」でオートフィルしてみるも B2セルは「=A2&A3」となり上記のような結果にはなりません。 マクロが使えないPCが有るため、関数で対応しなければならないのですが 良い関数は無いでしょうか?宜しくお願いします。

専門家に質問してみよう