• ベストアンサー

エクセルVBAで 指定のデーターを指定のシートへ書き込む方法

入力する表が 下記の通りです 日付  氏名    内容 1   Aさん   12345 2   Bさん   23456 3   Cさん   34567 2   Aさん   56789 3   Bさん   98765 5   Aさん   34986 というような表です シート名は"Aさん"という名のシートと"Bさん"というシートと"Cさん"という名のシートがあります。 そのAさんという名のシートには 日付  内容 1    2    3 4 5 6 というような 表があります。これは"Bさん""Cさん"ともいっしょです この"Aさん""Bさん""Cさん"の名前を判別して、その"内容"をAさんならAさんのシートの同じ日付の"内容"に書き込みたいのです。 結果としては、 Aさんのシート 日付  内容 1   12345 2   56789 3 4 5 6   34986 としたいのです。  どなたかよい方法御座いましたら宜しくお願い致します。

  • nanny
  • お礼率55% (72/129)

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

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

Sub TENKI() Dim DATA Dim i As Integer 'データの範囲(範囲は広くても構わない) 'タイトル行も含む DATA = Range("A1:C6") 'データの転記(タイトル行を避けて読み込む i=2) For i = 2 To UBound(DATA) If DATA(i, 1) = "" Then '日付欄が空白なら、記入を終了します。 Exit For Else 'B列のデータをシート名にします。 Sheets(DATA(i, 2)).Select '日付(半角整数値)を元に、データを記入します。 'DATA(i, 1) + 1 < この数字(1)は記入開始の縦位置を指示 'Cells(, 2) < この数字(2)は記入開始横位置を指示 Cells(DATA(i, 1) + 1, 2) = DATA(i, 3) End If Next MsgBox "転機終了" End Sub VBAの基本的なプログラムが解れば、理解可能だと思います。

その他の回答 (1)

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

(例データ) Sheet6に 日付 氏名 内容 2004/7/1 Aさん 12345 2004/7/2 Bさん 23456 2004/7/3 Cさん 34567 2004/7/2 Aさん 56789 2004/7/3 Bさん 98765 2004/7/5 Aさん 34986 別にAさん、Bさん、Cさんと言う名のシート名に3シートを変えておく。A,B、Cの文字の全角・半角に注意。 本件では全角。 (VBAコード) 標準モジュールに Sub test01() Dim sh1 As Worksheet Set sh1 = Worksheets("Sheet6") Dim sname As String d = sh1.Range("A65356").End(xlUp).Row ' MsgBox d For i = 2 To d sname = sh1.Cells(i, "B") ' MsgBox sname n = Cells(i, "A") - Cells(2, "A") + 1 'MsgBox n Worksheets(sname).Cells(n, "A") = sh1.Cells(i, "A") Worksheets(sname).Cells(n, "B") = sh1.Cells(i, "B") Worksheets(sname).Cells(n, "C") = sh1.Cells(i, "C") Next i End Sub Sheet6のsの大文字に注意。 (注意)A,B、Cさん各シートのA列書式を日付にする こと。 (結果) Aさんシート 2004/7/1 Aさん 12345 2004/7/2 Aさん 56789 2004/7/5 Aさん 34986 Bさんシート 38170 Bさん 23456 38171 Bさん 98765 Cさんシート 38171 Cさん 34567 私の過去の経験から会得した自家製のコーディング的なところがあります。修正する時は意を汲んでください。

関連するQ&A

  • EXCELでシートのデータを別のシートに反映させていく方法はありますか??

    データの一覧表を作って ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・  大分類 小分類  月日  内容 A B C D E… 1     2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ と入力済みなのですが、別のシートにこのデータを使って、大分類ごとのシートを作り、また、そのシート内で月ごとにデータを管理したいのですができますでしょうか??下記のような一覧表を作り印刷できるようにしたいんです。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 大分類 小分類 月日 内容 A B C D E…   ・   ・   ・ 合 計 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ よろしくお願いします。

  • ExcelVBA Sheet1のデータをSheet2に並び替えるには

    OfficeExcel2003を使って従業員の業務管理をているのですが、VBAを使って下記のようなことを自動化したいと思ってます。 Sheet1のA列には上から123・・・の管理番号がふっていて、B列には業務の内容が記入されています。 C列にはその業務を行う日付が入力されており、D列~G列にはその業務を行う人の名前が1名から4名の間で入力されています。 次に、Sheet2のA列には縦に全従業員の名前が入力されており、B列以降1行目にはカレンダー状にその月の日付が振ってます。 VBAを使って、Sheet1のデータを元にSheet2の各従業員が行う業務の日付のところに該当の管理番号が自動で表示されるようにしたいのです。 ユーザーフォームを使って入力できるところまではなんとか出来るようになりましたので、そのデータを元に従業員がわかりやすいフォーマットに変換しようと思ってます。

  • エクセルでシート1の内容を他のシートに個々に反映させる方法

    エクセルでシート1には、氏名・氏名がA2~B11に10件入力されたリストがあります。 次に、 シート2のC2にはシート1のA2、D2にはシート1のB2の内容、 シート3のC2にはシート1のA3、D2にはシート1のB3の内容、       :            : シート11のC2にはシート1のA11、D2にはシート1のB11の内容が反映される様に、シート2~11を作成したいのです。 シート2からシート11のC2、D2に一つずつ計算式を入力せずに、もっと早急に作成する方法を教えて下さい。 宜しくお願いします。    

  • エクセル2007 入力データを転記する方法

    初心者的な質問になりますが、宜しくお願い致します。 現在、部署で在庫管理を明確化するためにエクセルに在庫の部品名、個数、どこで保管されているかを表にして管理しています。そこに、検索できるように関数で検索表を作成しました。 ここまで問題なくできたのですが、ここからやりたいことをどのように作成すればいいのかアドバイスをお願いしたく質問させて頂きます。 やりたいことは、あるセルに日付、部品名、使用内容という3つの項目を入力したら、別シートに転記するというものです。 具体的に記述すると、 sheet1のA2に日付、B2に部品名、C2に使用内容を記述します。 その内容をsheet2のA2に日付、B2に部品名、C3に使用内容を転記するのですが、 単純に=Sheet1!A2とすれば、表示されます。が!!! やりたいことはSheet1のA2、B2、C2に入力された内容を転記したときに、Sheet2では下に追加する方向にしたいのです。 例として書いてみると sheet1に A2に2010/11/22 B2にA C2にA社保守部品として使用 と記述します。 その内容をsheet2のA2に日付、B2に部品名、C2に使用内容を転記します。 次の日にまた在庫から部品を使用したとします。 上記と同じように A2に2010/11/23 B2にB C2にB社保守部品として使用 と記述したときに sheet2のA3、B3、C3に記述していくようにしたいと考えています。 上記で記述したように=sheet1!A2であれば、sheet1に表記が残っていれば、sheet2にも同じように表記されています。 しかし、sheet1のA2、B2、C2を消去してしまうと、同様にsheet2も消えてしまいます。 sheet2は一度記述したら内容を保持しててほしいのと、 書き込み内容があるごとにsheet2は追記していくようにしたい ということです。 この場合、マクロやVBAで作成するほうがいいのか?それとも関数でできてしまうのか? というところで悩んでいます。 私個人としては簡単にできるほうがいいのですが、VBAがまだ未熟なので、できれば関数でできるようならベストです。 VBAを勉強してやればいいのでは?と回答されてしまうとそれまでなのですが、現在業務上、在庫管理システムがそこまでしっかりされていないので、部署的にできるだけ早くパソコン上で在庫確認ができて、個数をしっかり管理したい。 そして、使用内容を明確にし、無駄を省きたいということを実践していきたいということで、今回質問させていただきました。 ちなみに検索内容などはすべて関数で作成しております。 どうぞ、ご教授のほど宜しくお願い致します。

  • エクセル 違うシートに計算式がある場合

    エクセル2000を使っています。 下記の計算をしたいのですが、方法を教えてください。 1.Sheet1 A1とB1に計算したい元の数値が記入されています。 例えば、A1=1 B1=2 2. Sheet2 のA1とB1に数値が入る事としてC1に計算結果が出るものとします。 3. Sheet1のC1にSheet2のC1の内容を表示したい。 4. Sheet1 A2、A3・・・・・、B2、B3・・・・・に入力した後で、C2、C3・・・・・・に Sheet2のC1で計算させた結果を自動的に入力したい。 別の言い方をすれば、Sheet2 のA1・B1が関数の入力するところにあたり Sheet2のC1が関数の出力(というか、計算結果)にあたります。 Sheet1からSheet2を関数のように使いたいのです。 Sheet1 ____ A_____B_______C 1___1_____2______3 2___2_____3______5 3___5_____8______13 4___9_____1______10 5___4_____5______ 9 Sheet2 ____A_____B_____C 1________________ =A1+B1 2_____________________ こんなイメージです。 Sheet2で計算の入力に対応するセルがA1・B1 計算結果が書いてあるのがC1 実際は、大きな表を参照しながら計算するので、色々計算した結果(途中計算は他のセルも使います)がC1に表されます。 以上、よろしくお願いします。

  • 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列)が入ります。 以上です。申し訳ございませんが、ご教授よろしくお願いいたします。

  • エクセルで多数のシートから条件に合うものを呼び出す場合。

    いつもお世話になっております。 エクセルで下記のことはどうすればできるのか教えてください。 Sheet1 A1“ナンバー”、B1~F1“NO.1~NO.5” A2“氏名”、B2~F2“Bさん~Fさん” A3~A14“1月~12月” B3~F14は個々それぞれの金額が入っています。例)“23,000” Sheet2~Sheet5にはSheet1と同じ表がありますが、金額のB3~F14が違います。(なので、Sheet1と連携されていません。) Sheet6 A1~A5“NO.1~NO.5”、 B1~B5“Bさん~Fさん”っと個人ナンバー表みたいなのを作っています。 ここで、質問です! Sheet7 A1にナンバー“例)NO.5”を入力するとB1に名前が出る“例)Fさん”ようにしてます。B1に=VLOOKUP(A2,Sheet6!A1:B5,2,FALSE)。 たとえば、C1に“1”っと入力するとSheet1(“2”ならばSheet2)のFさん(B1に表示された方の名前)の金額を呼び出して、C3~C14に金額を表示させるにはどうしたらいいですか? よろしくお願いします。

  • 【Excel VBA】別シートへの反映方法

    こんばんは。 現在月間&日ごとのスケジュール表をVBAで作成しています。 そこで質問です。 Sheet1のA列に日付、B列に予定、C列に人の名前 があります。 Sheet1のC列の人の名前を各日付ごとの シート(シート名は1日、2日、3日・・・)のセル「E5」へ 反映させたいのですが、どうしても分かりません。 分かり難い質問で、大変申し訳ありませんが、アドバイスよろしくお願いします。

  • エクセルVBAでできますか?

    以前ここでこんな質問をさせていただきました。 ________________________________________________ エクセルで台帳を作成するため、sheet1に次の通り情報を入力しました。    A  B    C     D 1 日付 名前  住所   申請事由   2 1/1 甲川  東京都    1 3 1/2 乙本  大阪府     1 4 1/2 丙藤  北海道    2 5 2/1 甲山  京都府     3 ・ ・  ・  ・        ・ そして、sheet2に申請事項1の人の情報を、sheet3に申請事項2の人の情報を、sheet4に申請事項3の人の情報を空白を開けずに次の通り詰めて入力したいのです。 sheet2(申請事由1の人)     A      B      C 1  日付  名前   住所 2  1/1 甲川  東京都 3   1/2 乙本  大阪府 4 ・   ・    ・ sheet3(申請事由2の人)     A      B      C 1  日付  名前   住所 2  1/2   丙藤  北海道 3 ・   ・    ・ 4 ・   ・    ・ sheet1に日付、名前等を入力しただけで、各事由事に他のsheetに詰めて入力されるよう関数式で入力することは可能かどうか教えてください。よろしくお願いします。 ______________________________________________ その際、関数でするやり方を教えてもらったのですが、(A3=IF(ROW(A1)>COUNTIF(Sheet1!$D$1:$D$100,$A$1),"",INDEX(Sheet1!A$1:A$100,SMALL(INDEX(SUBSTITUTE((Sheet1!$D$1:$D$100=$A$1)*1,0,10^5)*ROW($1:$100),),ROW(A1))))というやり方)何しろデータが10000件くらいあり、かなり処理速度が重いです。どなたかマクロで上記の処理の方法を教えていただけませんでしょうか?

  • エクセルのコピー方法について教えて下さい

    エクセルについて教えて下さい。 例えばエクセルのシート名が1,2,3,4とあり、各シートのA1は氏名、B1は住所、C1からK1までは支払金額、L1にその合計があるとします。一覧表という名のシートを作り、A1に1のシートの名前、B1に1の住所、C1に1の合計金額、A2に2のシートの名前、B2に2の住所、C2に2の合計金額と順次各シートから移したいのですが、簡単にコピーする方法を教えて下さい。

専門家に質問してみよう