【Excel初心者】リスト自動作成ツール

このQ&Aのポイント
  • Excelでリストの自動作成ツールを作成することになり、基本Webを参考にして作業を進めていきました。
  • 今実装したい機能は以下の点です。Sheet2への表自動挿入、Sheet2へ抽出したSheet1の値を保持したまま、Sheet1の入力内容のクリアー。
  • ボタンを作成し、ボタン押下をトリガーとして上記機能を操作したいのですが、これはマクロで実現可能なのでしょうか?それとも数式で実現可能なのでしょうか?
回答を見る
  • ベストアンサー

【Excel初心者】リスト自動作成ツール

Excelでリストの自動作成ツールを作成することになり、基本Webを参考にして作業を進めていきました。 今現時点で出来ているのは以下の点です。  ・Sheet1で入力したセルの値を、Sheet2の任意のセルへ抽出している(数式使用) 今実装したい機能は以下の点です。  ・Sheet2へ抽出したSheet1の値を保持したまま、Sheet1の入力内容のクリアー(Sheet1の入力内容クリアー後も、Sheet2のセル内値は保持されたまま)  ・Sheet2への表自動挿入(今は事前に作成した表(適当にセルを複数選択し、罫線機能をつかって囲んだもの。)の中に数式を埋め込んでいます) ボタンを作成し、ボタン押下をトリガーとして上記機能を操作したいのですが、これはマクロで実現可能なのでしょうか? それとも数式でまだなんとかなるレベルなのでしょうか? もし可能であれば、例をご教示いただけたら幸いです。 宜しくお願い致します。

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

  • ベストアンサー
  • picklse
  • ベストアンサー率65% (26/40)
回答No.1

【Sheet1】 ┌───┬───┬───┐ │   │ A │ B │ ├───┼───┼───┤ │ 1 │項目1│あいう│ ├───┼───┼───┤ │ 2 │項目2│かきく│ ├───┼───┼───┤ │ 3 │項目3│さしす│ └───┴───┴───┘ 【Sheet2】 ┌───┬───┬───┬───┐ │   │ A │ B │ C │ ├───┼───┼───┼───┤ │ 1 │項目1│項目2│項目3│ ├───┼───┼───┼───┤ │ 2 │あいう│かきく│さしす│ ├───┼───┼───┼───┤ │ 3 │   │   │   │ ├───┼───┼───┼───┤ │ 4 │   │   │   │ └───┴───┴───┴───┘ 上の表を例として作成しています。 Sub DataCopy() Dim iMaxRow, iCount As Integer ' データ挿入行を取得 If Range("Sheet2!A2").Value = "" Then iMaxRow = 1 Else iMaxRow = Range("Sheet2!A1").End(xlDown).Row End If ' データの複写と消去 For iCount = 0 To 2 Range("Sheet2!A1").Offset(iMaxRow, iCount).Value _ = Range("Sheet1!B1").Offset(iCount, 0).Value Range("Sheet1!B1").Offset(iCount, 0).ClearContents Next iCount End Sub ※Endプロパティで最終行を探しているので、Sheet2のA列は途中に空のセルを含むことができません。空のセルがあると、ひとつ前の行を最終行と判断します。 ※上の表は、ブラウザのフォントを等幅フォントにすると綺麗に見えます。

kugayuyu
質問者

お礼

ご返答遅れてしまい申し訳ございません。 問題が解決致しました。 本当にありがとうございました。

kugayuyu
質問者

補足

ご回答ありがとうございます。 自分で試していましたらお礼が遅れてしまいました。申し訳ございません。 「Range("Sheet2!A1")」など、私のPC環境では思うように動作せず、「Worksheets("sheet2").Range("A1")」と指定しなおした所動作いたしました。 また一部自分の欲しい挙動を行うために書き換えました。 重ねてもう一つご質問させてください。 数式のセルを消去対象に含めないようにするには、文字列検索で一文字目に"="が検出されたら、その値は消去しないという風にしたく、下記のVBAを書いてみましたが、「Nextに対するForがありません」というエラーが表示されます。 ' データの複写と消去 For iCount = 0 To 3 ' Sheet1 複写対象行数 Worksheets("sheet2").Range("B1").Offset(iMaxRow, iCount).Value _ = Worksheets("sheet1").Range("B1").Offset(iCount, 0).Value If Right(Worksheets("sheet1").Range("B1").Offset(iCount, 0).Value, 1) = "=" Then Next iCount Else Worksheets("sheet1").Range("B1").Offset(iCount, 0).ClearContents Next iCount この場合、どこを修正したら宜しいのでしょうか?

関連するQ&A

  • excel2010について 数式

    excel2010について教えてください。 ある計算式が含まれたシートを入手したのですが、そのシートの空白セルに 「2012/1」と入力すると、「=2012/1」と数式が自動で入り、「1905年7月」と表示 されてしまいます。 ちなみに、セルの表示形式は「日付」にし、「2003年3月」に設定しています。 また、表示形式を標準にし、「2012年2月」と入力すると、エラーとなり、 「入力した数式にエラーが見つかりました。次の方法があります。 年月20122」 とポップアップが出て、セルには「年月20122」と表示されてしまいます。 別な新しいシートを作成し、同じように入力すると問題なく表示されます。 ということはこのシートに何らかの数式が組み込まれているのでしょうか? 入手したのがnetからのため、作成者に聞くことができないので、こちらで 質問させていただきました。 よろしくお願いします

  • エクセルのクリアボタン

    セルの1つにクリアボタンを作ってそのボタンを押したらシート内の値がすべてクリアされるという機能はありますか? もしございましたら、作成方法を教えてください。

  • Excelで、セルを削除した際に、自動的に繰り上がるセルの値を入力させ

    Excelで、セルを削除した際に、自動的に繰り上がるセルの値を入力させたい。 シート1にずらーっと名前のリストを表示させています。その名前を、シート2で拡大して表示させる為に、シート2に大き目のセルを結合させて作成し、当該のセルに「=シート1!A1」との数式を入れました。 この段階では、シート1のA1の値が、シート2に拡大表示されている状態となります。 拡大表示させた物を印刷する事が目的な為、この状態を印刷した後に、シート1でA1のセルを削除しました。自動的にシート2には、繰り上がったシート1のA1になるはずの次の値(「削除する前はA2)が繰り上がって表示されるかと思っておりましたが、「#REF!」の表示が出てしまいます。 設定か何かで自動的に繰り上がった値が表示される方法はありませんでしょうか。 ※ちなにみ、この表示される値は数式等ではありません。

  • エクセル関数 複数条件検索について

    エクセル関数について質問です。 検索値を増やす場合の関数について教えてください。 セルA6に、セルA3とA4に入力した値と合致する値をSheet2から抽出し、抽出した値とA5の値を掛けるという以下の数式が入っています。 =IF(2-COUNTA(A3,A4),"",VLOOKUP(A3,Sheet2!A:AH,MATCH(A4,Sheet2!A$1:AH$1,1),0)*A5) Sheet2のリストに項目が増えた為、この数式をセルA2(新しく増えた検索値)とA3とA4に入力した値と合致する値をSheet2から抽出し、抽出した値とA5の値を掛けるという数式をA6入れたいのですが、この場合、どのように数式を直せばいいのでしょうか。 エクセルのバージョンは2007です。 ご教示下さい。よろしくお願いします。

  • EXCEL・・検索ボタンをクリックするとマクロが実行されるようにしたい

    EXCELでSheet1にデータを入力、Sheet2に検索結果抽出フォームを作成してあります。セルにキーワードを入力しマクロの実行でデータの抽出ができるように出来上がっています。 そこで、セルに入力→ツールバーからマクロの実行という作業を検索ボタンを作成し一発で検索ができるようにしたいのです。 キーワードの入力セルはC:3です。 よろしくお願いします。

  • Excelでリストボックスの作成がしたい

    こんにちは。 どなたか、教えてください。 今、仕事で入出金表を作成しているのですが、通貨がバラバラです。1つのシートに表を作成しています(1つのシートで管理したい。ということで) 通貨の欄に「円・ユーロ・ドル」とリストボックスで選択できるようにしたい。というのが一点目の疑問。。。 そして、もう一点。 その選択したセルを参照し、セルの表示形式を変更したい。 B1のセルに「円」とかかれていたらB2のセルには「10,000」 B1のセルに「ドル」とかかれていたらB2のセルには「$109.35」と表示される。というふうに。 ちなみに、必ず「109.35」と記載されるわけではありません。 すごく、悩んで困っています。 どうか、教えてください。m(_ _)m

  • 【EXCEL】 結合されたセルを参照した式

    1.EXCELで、数式で計算する時に元になるデータ(Sheet1のセル)に結合されたセルを指定しています。 2.Sheet2に上記の結合セルを参照した数式を作成しようと考えています。  a.セルに = (イコール)を入力し  b.Sheet2の目標セル(B1:C1)をクリック  c.Enterキーを押すと  入力された数式が  ='Sheet1'!B1:C1  となってしまい、エラー(#VALUE!)になってしまいます。  入力後に数式を手で修正して   ='Sheet1'!B1  とすれば正常に値が表示されますが、他のシートはこんな修正をしなくても   ='SheetXX'!B1  のように表示されます。 どこを修正(確認)したらいいのかわからない状態です。 どなたかご存知の方がおりましたらよろしくお願いいたします。

  • エクセルで

    いくつかの表の一部のセルのロックをはずして、その後シートを保護していわゆる「保護されたセル」と「保護されてないセル」を同じシート上に作ったのですが、「保護されてないセル」にいちいちカーソルを合わせて「数式と値のクリア」するのが面倒くさいのでそのいくつかの表全部を反転させていっぺんに「数式と値のクリア」すると「変更しようとしているセルまたはグラフは保護されているため、読み取り専用となっています」と出てできません。 いちいち、「保護されてないセル」にカーソルを合わせるしかないのでしょうか。

  • EXCELでハイパーリンク自動生成

    ある管理表を作成しています。これは、管理表、対応表という2種類で構成していますが、管理表のシートの1つのセルに ある言葉を入力すると、その管理表XLSの中に新たな対応表のシートを自動で作成してそのシート内の、ある場所(セル)とシート名にその言葉が自動で作成されるようにしたいのですが、できるのでしょうか?それとも、やはり、言葉入力のあと、手動でシートをコピー作成して、ハイパーリンクを作るしかないのでしょうか?教えて下さい。

  • Excel2002の検索

    Excel2002で検索をしました。 A1セルには「3」を入力しています。数式は入れていません。 「編集」「検索」で検索する文字列には「3」を入力しました。 検索場所は「シート」、検索対象は「数式」にしました。 そこで検索をすると、A1セルの「3」も検索されました。 そこで質問です。 検索対象は「値」ではなく「数式」なのにどうして検索されたのでしょうか?検索対象の値、数式の違いはなんでしょうか?

専門家に質問してみよう