• ベストアンサー

このようなVBAを作りたいのですが

imogasiの回答

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

質問では1が所定回数加わると、初めからのデータを別シートへ写すような表現になっている。実例では前回移した以後のこれまでのデータになっている。たぶん実例の方だろう。 ーー これはA列に1が所定回数入力されたら、すぐに所望の処理をするのを希望ですか。 こんな、回答者にパズルを解かす(本質問は課題の丸投げタイプですよ)ような方式をやめて、データが全部入力し終わったら、処理する(バッチ処理)か、A列で 所定回数だけ1が現れたら、(COUNTIF関数でセルに1の件数をだし、気づいて)、処理のコマンドボタンを押すとかが良いのではないですか。処理が重くなったりチェンジイベントは扱いにくいと思うが。

関連するQ&A

  • どのようなVBAを書けばよいでしょうか

    以下のような表があります。 (sheet1) A列    B列    続く… タイトル1 タイトル2  …     (←一行目にタイトル) 13     5          (←二行目から数字がランダムに)  18    14 44    33 36    87 22    11 14    14 27    24 21    39 32    62 35     5 44     4 12     3 (以下続く。各列が何行で終わるかもランダム) 「各列の数列の平均と分散」「列全体を含めての平均と分散」 を、新たなシートに書き出したいのです。 上の例からすると、 (sheet2) A列    B列   C列       平均   分散    (←一列目) タイトル1  ??   ??    (←二列目から結果を) タイトル2  ??   ??  … 全体     ??   ?? のような感じです。 データの量が多いので、手作業で関数を使っていては、莫大な時間を要してしまいます。 どのようなVBAを書けばいいのでしょうか。 分かる方、よろしくお願いします。

  • どのようなVBAを書けば良いのでしょうか

    以下のようなデータがあります。 ?の部分はランダムな値が入っていると考えて下さい。 A列 B列 C列 D列 E列 F列 ?  ?  ?  ?   ?  ? ?  ?  ?  ?   ?  ? ?  ?  ?  ?   ?  ? 「  「   「   「    「   「 ?  ?  ?  ?    ?  ? ?  ?  ?  ?    ?  ? 」  」    」   」    」   」 ?  ?  ?  ?    ?  ? ?  ?  ?  ?    ?  ? 「  「  「   「    「   「 ?  ?  ?  ?    ?  ? ?  ?  ?  ?    ?  ? ?  ?  ?  ?    ?  ? 」  」    」   」    」   」 ?  ?  ?  ?    ?  ? 以下不規則にデータは続く このデータの「」と「」内のデータを消したいのです。 正確に言えば、セルを削除して、上方向にシフトしたいのです。 つまり、上の例からすると A列 B列 C列 D列 E列 F列 ?  ?  ?  ?    ?  ? ?  ?  ?  ?    ?  ? ?  ?  ?  ?    ?  ? ?  ?  ?  ?    ?  ? ?  ?  ?  ?    ?  ? ?  ?  ?  ?   ?  ? 以下不規則にデータは続く のような形に加工したいのです。 ただセルを削除して、上方向にシフトするには、 オブジェクト.Delete Shift:=xlShiftUp を使えば良いことまでは分かりました。 しかし、求める形にデータを加工するには、どのような制御構造を書けば良いのか、正直手詰まりです。 VBA初心者のため、アイデアに限りがあって…。 分かる方、お手数をおかけしますが、よろしくお願いします。

  • エクセルVBAの入力について

    "Sheet1"のA1、C1、F1、G1の値(計算結果のみ)すべてコピーして、 貼り付ける場所が"Sheet2"のA1:Z10の範囲内で、 A1はB列、C1はG列、F1はH列、G1はZ列の空白セルに上詰めで貼り付ける。 なおF、G、H、Z列以外の列には値が入力されていたり空白もあります。 また同時に、 "Sheet1"のA1、C1、F1、G1の値(計算結果のみ)の内でA1とF1のみコピーして、 貼り付ける場所が"Sheet3"のC1:Y10の範囲とC13:Y23範囲内で、 A1はC列、F1はY列の空白セルに上詰めで貼り付ける。 なおC、Y列以外の列には値が入力されていたり空白もあります。 またC11:Y12の範囲内にはすべて値が入力されています。 よろしくお願いします。

  • どうVBAを書けばいいのでしょうか

    以下のような表があります。 (sheet1) A列 不規則な数列(←一行目にタイトルが書き込まれています) 13   (←二行目から数字がランダムに書き込まれています)    18 44 36 22 14 27 21 32 35 44 12 (以下続く) Case1[i行の値よりi+1行の値が大きく、i+1行の値よりi+2行目の値が大きい件数] Case2[i行の値よりi+1行の値が大きく、i+1行の値よりi+2行目の値が大きく、i+2行の値よりi+3行目の値が大きい件数] などの件数を、新たなシートに書き出したいのです。 上の例からすると、 (sheet2) A列  B列(←B列に件数を書き込む) Case1  3 Case2  1 のような感じです。 if文で作ってみたのですが、うまく処理してくれません。 どのようなVBAを書けばいいのでしょうか。 分かる方、よろしくお願いします。

  • 【VBA】特定の条件でセルをコピー

    VBA初心者です 特定の条件を満たすセルの隣接する指定のセルをコピーして別のシートへ貼付けたいです 【sheet1】 A   B   C   ~   F  G 1   2   あ   ~   3  あり 2   1   い   ~   7  なし 3   2   う   ~   4  あり 5   3   え   ~   6  あり 6   2   お   ~   5  なし 7   1   か   ~   3  あり 8   3   き   ~   7  なし 9   2   く    ~  8  なし といったデータのうち、G列が「あり」の行の C~Fの値を別のシートへ以下のように貼り付けたいです 【sheet2】 A   ~   D  E あ   ~   3  _ う   ~   4  _ え   ~   6  _ か   ~   3  _ 全くの初心者です よろしくお願いします

  • VBAの

    VBAで特定の列で文字マッチングをして、ヒットした行をシートAからシートBにコピーしたいと考えています。 単にセルの値を全コピーするだけなら可能です。しかし、このときにシートAが何行、何列あるか分からない場合、可変長なシートAを特定の列で文字マッチングをして、シートBにコピーするためにはどのようにすればよいのでしょうか?

  • Excel VBA で検索 → 検索結果をsheetに書込む

    データが以下のようにランダムにA列のみに『A65536』までずら~っと並んでます。  ・  ・ R:F7090006000C9129 S:06 R:4C S:06 R:F23404AA 16:56:08 S:06 R:F50A0000008807 S:06 R:F50A00010053D3 S:06  ・  ・ この中の検索条件は *F50A* 『F50A』を含む情報を持つセルを 全て抜き出して、sheetに書き込む。 ※書込み先のsheetは、新しいsheet,既存のsheet どちらでも構わない。 アドバイス宜しくお願い致します。

  • excel 別シートへのデータの転記

    sheetが二枚あります。 sheet1 元データ sheet2 転出先(三種類あります) sheet1のA列に〇がついていたらsheet1Q列のシート名を見て、 転出先に同じデータがあるか?無ければ新規作成をするか? 新規作成をする場合には以下のように、 そのシート名の各セル番地にデータを転記。 sheet1のA列2行目移行同じ繰り返しで○があるか見に行く。 sheet1の1行目は項目名になります。 A2に○が付いていてQ列のシート名が100だった時 A2のデータを以下のように。 sheet1   sheet2(シート名は100) P列の値 → A7へ C列の値 → A8へ H列の値 → A9へ I列の値 → A10へ F列の値 → E5へ L列の値 → D6へ M列の値 → D7へ K列の値 → F9へ J列の値 → D8へ 続けてA4に○が付いていてQ列のシート名が100だった場合。 sheet1   sheet2(シート名は100) P列の値 → A12へ C列の値 → A13へ H列の値 → A14へ I列の値 → A15へ F列の値 → E10へ L列の値 → D11へ M列の値 → D12へ K列の値 → F14へ J列の値 → D13へ 以上のようなことがしたいのですが、 参考書でサンプルなどを見てやっているのですが、 なかなかうまくいきません。 コードのご教示をお願いたします。

  • VBA 他シートを参照しているセルのコピー

    お世話になります。 以下のシートがあります。 [sheet a]    A     B        C      D     E 1 2004 2005 2006 2007 2008 2 =b!A2 =b!C2 =b!E2 =b!G2 =b!I2 3 10 15 16 4 11 4 12 30 20 9 2 5 =SUM(A3:A4) =SUM(B3:B4) =SUM(C3:C4) =SUM(D3:D4) =SUM(E3:E4) [sheet b] A B C D E  F G H I J 2004 2005 2006 2007 2008 1 あ1 い1 う1 え1 お1 か1 き1 く1 け1 こ1 2 あ2 い2 う2 え2 お2 か2 き2 く2 け2 こ2 ・・・・・・・・・ [sheet a]F列以降に入れるデータは、VBA(マクロ)を使って、別のブックから取り出しています。 (例) F1…=E1+1(E1の数式をコピー) F3,F4…任意の値(別のブックからコピー) F5…=SUM(F3:F4)(E5の数式をコピー) 1行目,5行目の場合は左のセルをコピーして数式を貼り付けると、列が自動的に列が変わりますが、2行目の場合は元のシートを1行おきに参照しているので、単純にコピーしただけでは正しい数式が入りません。 2行目の参照をVBAで作るには、どのようにしたらいいでしょうか。 よろしくお願いします。

  • エクセルVBAでデータ検索(Win2000,Excel2000)

    エクセルで毎日の業務で手計算している作業をVBAコードかいて試しているのですが、縦と横の検索で行き詰まってしまい質問しました。どうぞよろしくお願いします。 _A__B____C____D__E__F___G___H 1| 2|_______その他_1~3_4~6_7~10_11~20_21~30 3| 3|__項目A___ 0___50__49__46___43__40 4|__項目B___ 0___45__44__39___37__34 5|__項目C___ 0___43__42__34___30__ 28 行 *このデータは現在(B3:V42)にあり今後増える可能性あり *1行目とA列は空白です。 *2行目とB列は対応する項目です。 *3行目は関係ない値が入っています(データをつくる為の値) このようなデータが、"Sheet2"にあると仮定します "Sheet1"のシート上に配置したComboBox(コントロールツールボックスの)に検索値があります。 (ComboBox1 → 数値 , ComboBox2 → 数値 , ComboBox3 → 文字)*リストは"Sheet1"に登録してあります。 TextBox1 ÷ 2 の結果を小数点以下切上げし、これにTextBox2の値をかけたもの(仮にAAAとする)が、2列目のそれぞれのセルの数値範囲に対応し、TextBox3の文字列がB列に対応し、両検索結果の交わったセルの値を返すようにしたい。 例)もしAAAが「8」なら「F列」をみる。TextBox3 の文字列が「項目B」なら「4行目」をみる。この結果、交わったセルは「F4」なので、「F4」にある値「39」を"Sheet1"."A1"に返す。 また、これらコンボボックス(このシートとは別にテキストボックスを使うこともある)にはひとつずつchangeイベントでいきなり別シート("Sheet3")に書くコードが既に書いてあります。このセルから取り出すことも可能です。よろしくお願いします。