• ベストアンサー

VBAでデータ処理

現在データ入力をしています。 例えば、A列には名前を入力しB列~F列まではその物に関する情報を入力したいと思います。 しかし、横長になりすぎるので、普段はデータ部分のB列~F列のセルを隠しておき、 A列のセル(例えばA3)をクリックすると、B3のデータがG1に、C3のデータがG2に、D3のデータがG3に、 E3のデータがG4に、F3のデータがG4に表示するようにしたいと思っています。 どのような方法があるでしょうか。ご教授下さい。

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

  • ベストアンサー
回答No.2

その処理しようとしているワークシートに限って言えば、以下の処理でいけると思います。 (Worksheet_SelectionChangeイベントを使ってみました) あと、全角空白使ってます。 Private Sub Worksheet_SelectionChange(ByVal Target As Range)   Dim i%   ' A列選択時(選択したカラムのR1C1形式での値が1の場合)   If Target.Cells.Column = 1 Then     ' 選択セルが空じゃない場合(こういうのがいらなかったらここのIFは省く)     If Cells(Target.Cells.Row, Target.Cells.Column).Value <> "" Then       ' 仰っている処理を行う       For i% = 1 To 5         Cells(i%, Target.Cells.Column + 6).Value = Cells(Target.Cells.Row, Target.Cells.Column + i%).Value       Next     End If   End If End Sub 本当のシートがどういう風になっているのか(G列が固定かどうかとか・・)はわかりませんが。。 頑張ってください^^

tack_tack
質問者

お礼

回答ありがとうございます。 理想的な内容に仕上がりました。 これで楽々データ処理ができると思います。

その他の回答 (1)

  • rheda
  • ベストアンサー率30% (3/10)
回答No.1

”A列をクリックすると”は、難しいと思いますが、 コマンドボタンでも1つ置いておいて、 A列のセルを選択した状態で、ボタンを押せば、 G列の頭から、選択(選択した行の)内容を表示 させることはVBAなら難しくないと思います。 range("g1")=activecell.offset(0,1) range("g2")=activecell.offset(0,2) といった感じです。 B~Fは、列の移動で隠しています。

tack_tack
質問者

お礼

ご返答ありがとうございました。 コマンドボタンを使うという方法は、 上記の方法と組み合わせて、データ抽出の際に利用させていただきます。 ありがとうございました。

関連するQ&A

  • テキストファイルのデータをエクセルへコピーのやり方

    よろしくお願いします。 エクセル2000を使っています。 テキストのデータで A1/B1/C1    /はスペースです。 D1/E1/F1    データの長さは全部違います。 A2/B2/C2     D2/E2/F2 A3/B3/C3     D3/E3/F3      ・    ・(続く) といったものがあります。これをエクセルで    A列 B列 C列 D列 E列 1行 A1 B1 C1 D1 E1 2行 A2 B2 C2 D2 E2  ・・・ 3行 A3 B3 C3 D3 E3  (続く)          ・          ・(続く) という感じで別々のセルにいれて貼り付けしたいのです。 テキストデータを別々のセルに貼り付けする方法は 過去ログで「区切り位置」というのをつかえばいいというのはわかりましたが、この場合の複数行にわたるテキストデータをエクセルの1行に貼り付けする方法がわかりません。また、データの長さが違うために「区切り位置」もうまくいきません。 良い解決法をお願いします。

  • VBA,二つのExcelのsheetにデータ保存

    VBA初心者です。 皆様のお力をお貸し頂きたく質問させて頂きます。よろしくお願いいたします。 質問内容は、下記になります。 Excelのsheet1には、縦列A,B,C・・・とデータが入っております。 sheet1の例 A B C sheet2は、入力するsheetです。 今回はA列の3行目からとします。 問題は、sheet1の縦の列をA,B,C,Dとすればデータの更新は、出来るのですが sheet1のデータのA,B,C一つ飛んでEまた一つ飛んでGという感じでsheet1のデータを 飛ばしてsheet2に表示、更新(保存)をしたいと思います。 ですので、sheet2のA列の3行目からA,B,C,飛んでE飛んでGとsheet1からデータを 表示させ、さらにsheet2の入力値が変更されると、sheet1のデータが入っている A,B,C,E,Gに更新される仕様です。 sheet1(データが入っています) A , B , C , E , G , 値1 , 値2 , 値3   , 値4 , 値5 sheet2(入力する、入力したデータは、sheet1へ更新される) A列 3行目 、sheet1の値1(A列)が入ります。 4行目 、sheet1の値2(B列)が入ります。 5行目 、sheet1の値3(C列)が入ります。 6行目 、sheet1の値4(E列)が入ります。 7行目 、sheet1の値5(G列)が入ります。 以上です。申し訳ございませんが、ご教授よろしくお願いいたします。

  • VBAでのデータ転記処理

    下記の処理をVBAで作成したいのですが…。 Book "aaa" の "Sheet1" A |B |C |D |E |F |G |H |I |J |K 1 あ|い|う|え|お|か|き|く|け|こ|さ 2 た|ち|つ|て|と|な|に|ぬ|ね|の|は|ひ|ふ|へ 3 ま|み|む|め|も|や|ゆ|よ これをBook "bbb" の "Sheet1" に A|B|C|D|E 1 あ|い|う|え|お 2 か|き|く 3 け|こ|さ 4 5 た|ち|つ|て|と 6 な|に|ぬ 7 ね|の|は 8 ひ|ふ|へ 9 10 ま|み|む|め|も 11 や|ゆ|よ と言う風にデータを転記したいのです。 Book "aaa" の Sheet "Sheet1"のA~E列までは必ずデータが入っていますが F列以降は、データがある場合と無い場合があり データがなければ、そこのセル(行)は詰める。 さらに、Book "aaa" の1行を1セットとして、Book "bbb" で1セット単位で、空白行を設けたいのです。 上記例のように、1セットの行数は固定ではありません。 Book "aaa" の Sheet "Sheet1"のデータ行数は大量に(1000行以上)あります。 わかりにくいと思いますが、どなたかよろしく御願いします。

  • 【Excel VBA】データを集計する数式を入力するマクロ

    Excel2003を使用しています。   A列   B列   C列   D列   E列   F列 1      9/1                    20000 2      9/2              1000 3      9/10              5000 : : 10           9月計        ※1    ※2    11 12 13     10/1                   10000 14     10/10             2000 15     10/14                   4000 : : 20           10月計       ※3    ※4 上記のデータでいうと、 ※1(E10セル) =SUM(E1:E9) ※2(F10セル) =SUM(F1:F9) ※3(E20セル) =SUM(E13:E19) ※4(F20セル) =SUM(F13:F19) という内容の数式を入力するマクロを作成したく、数式を入力したいセルをアクティブにして、ボタン等に登録したマクロを実行すると数式が入力されるようにしたいと考えていますが、その際、集計範囲の最下行は、アクティブセルの1行上までになりますが、最上行をどのようにして取得すればよいかがわかりません。 (実際のデータは、もっと行数も入力されているデータ数も多いです) また、他にもこんな方法があるとか、こうしたほうが簡単とかあれば、教えていただけると勉強にもなりますので助かります。 うまく説明できなくて申し訳ありませんが、よろしくお願いします。

  • Excel,VBA シートの自動作成、データ

    Sheet 1 に住所録 Sheet 2~50までに同じフォーマットで A  B  C~E F~H No. 名前 S~L S~L と並んでいてA4から名前 C~の列には各数量が50行ほど入力されています。 Sheet 2~50 までを名前ごとにまとめたSheet を自動で作成したいです。 Sheet1とSheet2~50の名前順は同じです。 例 Sheet51 シート名 Aさん    DEF列    SML 1行目1,2,3(Sheet2AさんのC~E数量) 2行目2,2,2(Sheet2AさんのF~G数量) 3行目2,2,2(Sheet3AさんのC~E数量) 4行目4,4,4(Sheet3AさんのF~G数量) 同じようにSheet 53 Bさん となるようにループする方法をご教授ください。 よろしくお願い致します。

  • 膨大なデータ処理について

    膨大なデータ処理を行っているのですが効率が悪く 望んでいる機能があるかどうか探しましたが探し方が悪いせいか みつからないので質問させて頂きます。 A,B,C列にそれぞれ2万程度のデータが連続してあり D,E,F列にA,B,C列の平均と標準偏差、相対標準偏差を それぞれ求めるということを100ファイルほどするのですが 今のところ A1,B1,C1の平均値、標準偏差、相対標準偏差を D1,E1,F1に関数で求めて各セルの右下をドラッグして D20000、E20000、F20000まで 持っていっているのですが 非常に時間が掛かってしまい効率が悪い現状です。。 そこでもし何か良い機能がございましたら 是非教えていただきたいです。 宜しくお願いいたします。

  • 指定した数だけデータをコピペする方法

    VBAの参考例を教えてください。 <シート1> A列に1から順に数字が入力されており、B列からE列まで数値のデータが入力されています。F列にはB列からE列にデータが入力されているセルの数をカウントした関数が入力されています。 <シート2> シート1のB~Eに入力されたデータが縦に入れ替えの上A列にコピぺされています。 ここで、シート1のA列の数値をコピーし、シート1F列に示されたデータ数分だけ、シート2のF列に縦に順々にペーストしていく方法をご教示ください。シート1のA列に入力された数値が最後の行にくるまでこれを繰り返します。 シート1 A B C D E F 1  a b c d 4 2  e d f   3 3  d e     2 ・ ・ ・ シート2 A B C D E F a         1 b         1 c         1 d         1 e         2 d         2 f          2 d         3 e         3 当方、VBAは全くの初心者です。急遽仕事で必要になってしまい、質問しました。 どうぞよろしくお願いします。

  • 【Excel】該当データ表示方法について

    Excelの表で、(A)列にデータ名、(B)列にデータ値が入力されているとして、 1.(C)列に(B)列のデータ値の種類を昇順で表示、 2.(D)列に(C)列のデータ値を持つ(A)列の文字を表示、 3.(E)列に(D)列のデータ種類の数を表示 という3つの内容を実現したいのですが、(1つでも) ご存知の方、教えて下さい。よろしくお願いしますm(__)m 【イメージ】   | (A) (B) (C)  (D)   (E) ――――――――――――――――――― (1)| A 10 10 A、D、E   3 (2)| B 20 20 B、G    2 (3)| C 30 30 C、F    2 (4)| D 10 (5)| E 10 (6)| F 30 (7)| G 20

  • エクセルでのデータの照合

    お世話になります。WindowsXPエクセル2003を使っているマクロ初心者です。 A B C D E F G 1 2 3  1 2 2 2 3 4  2 3 4 3 4 5  2 4 5 4 5 6  4 4 6 5 6 7  5 6 8 (左グループを元データ、右グループを加工データとします) A列とE列・B列とF列・C列とG列…という流れでデータを比較し、 元データと値の違うセルの色を変え、赤の太字にするようなマクロを作るには どのように書けばいいのでしょうか。 上記例の場合では、E3・F5・G2・G7のセルを変化したいということになります。 条件付書式でも試してみたのですが、なかなかうまくいかなかったため、 これからマクロに触れる機会も増えることを考えて、マクロで対応したく思い、 連絡させていただきました。宜しくお願いいします^^

  • データの統計

    以下のような表のとき、D1に>75と入力しE1に>450と入力したとき、B列の数字が入力されているセルの行が、上記の条件が満たされるB列のセルの数をB1に出したいのですが、何か良い方法がありましたらご教授お願いします。 B1に1と表示されれば正しいです。 A   B   C    D    E             >75   >450 881  884       75    359 686           80    486 1052  1054      75    994 179  179       50    930 データ量は5000行を超え、なお増加中です。

専門家に質問してみよう