エクセルのシート間で文字や数値を飛ばす方法

このQ&Aのポイント
  • エクセルのシート1にある文字や数値をシート2の指定した場所へ飛ばすことが可能です。
  • 具体的には、シート1のリストに数値を入れると、シート2へ自動的にNo.・文字・数値などが表示されます。
  • この機能を利用することで、シート1とシート2のデータが連動して更新されるような表を作成することが可能です。
回答を見る
  • ベストアンサー

エクセルのシート1にある文字や数値をシート2の指定した場所へ飛ばす事が

エクセルのシート1にある文字や数値をシート2の指定した場所へ飛ばす事が出来ますでしょうか? 出来るようであれば、ぜひご教授ください。 シート1のA列にNo.、B列に東京23区名、C列に数値A、D列に数値B、E列に数値C、F列に計、最後の行に合計のリストがあります。 例えば、シート1のリストの文京に数値Aが11、数値Bが12、数値Cが13。新宿に数値Aが14、数値Cが15。杉並に数値Bが16。練馬に数値Bが17、数値Cが18と入力された時、シート2の指定の場所、ABC1にNo.の2、ABC2に文京、A3に数値Aの11、B3に数値Bの12、C3に数値Cの13、ABC4に合計の36。DEF1にNo.の4、DEF2に新宿、D3に数値Aの14、F3に数値Cの15、DEF4に合計の29。ABC6にNo.の5、ABC7に杉並、B8に数値Bの16、ABC9に合計の16。DEF6にNo.の7、DEF7に練馬、E8に数値Bの17、F8に数値Cの18、DEF9に合計の35。 このような、文字と数値をシート2へ出力する事が出来ますでしょうか? ようするに、シート1のリストに数値を入れたら、シート2へ自動的にNo.・文字・数値などが表示される。 説明が下手ですみません。 文字での説明は難しいですね。少しでもわかりやすく表にしてみました。 シート1    A   B      C      D      E      F 1  No.  区名   数値A   数値B   数値C    計 2  1   千代田    3  2   文京    11     12      13     36 4  3   中野 5  4   新宿    14             15     29 5  5   杉並          16             16 6  6   世田谷 8  7   練馬          17      18      35 9  8   台東 10  9   荒川 11  合  計     25     45      46     116 シート2    A    B     C     D     E     F 1       2                 4 2       文京              新宿 3  11    12    13     14          15 4       36                29 5 6       5                 7 7       杉並              練馬 8       16                17     18 9       16                35 10 今月はこのようになったり、来月は他の区になったりします。 おわかりになりますでしょうか? 出来ましたら、具体的にわかりやすくご教授をお願い致します。 それでは、宜しくお願い致します。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.5

回答No2です。遅くなってごめんなさい。 最初のご質問でかなりの労力を使って解答をしておるのですが、実はもっと複雑で違っていましたといわれますとこれ以上の答えはご免こうむりたいですね。時間がたつともう一度考え直しをしなければならないので対応が大変なんです。別にご質問ください。

peaceland
質問者

お礼

ご回答、ありがとうございます。 ご立腹させてしまった様で、すみません。 補足の最後に、この様な質問はよろしくないようであれば、新たに質問いたします。と書いたのですが・・・。 KURUMITOさんが言われる様に、別に質問させて頂きます。 お手数をお掛け致しまして申し訳ございませんでした。 KURUMITOさんのご尽力に大変感謝いたします。 KURUMITOさんの答えが、初めの質問に対して出来る事ができた事と、私の考えに近いと思いますのでベストアンサーと致します。 ありがとうございました。

その他の回答 (4)

noname#192382
noname#192382
回答No.4

No3です。 >エクセルでシート1を入力してあるエクセルのブック と言うのは、シート1にあるリストでしょううか? はいそうです。計算をするシート1をひらいたところで新マクロの記録を行います。 >新マクロを記録するということにして これは、エクセルのツール→マクロ→新しいマクロの記録→マクロの記録でOKボタン? 全くそのとおりです。メニューバーのツールのなかにあるマクロを選択して、そこで新マクロをスタートしておいて、そのあとすぐ記録終了のボタンを押します。 そして、ツール→マクロ→マクロ→編集?? 再びメニューバーのツールのなかにあるマクロを選択して、マクロウインドーのなかでさきほど記録したマクロを選択してそのマクロを編集することにします。するとビジュアルベイシックのウインドーが開きそこにプログラムが現われますのでそのなかにNO1でかいたプログラムをコピー貼り付けをして下さい。そのあとビジュアルベーシックのメニューバーにある実行ボタンを押すと、マクロの計算を実行してシート2に結果が現われます。 バージョンにより多少異なると思いますので、分からないところはまた説明します。

peaceland
質問者

お礼

ご回答、ありがとうございます。 もう一度、挑戦したら「マクロ」出来ました! ところが私のやり方が悪いせいか、シート1に途中から数値を入れてもシート2に反映されません。 どこをどうすれば、何が変わるのか??? ん~。むずかしー! やはり、時間がある時に頑張って挑戦してみます。 大変にありがとうございました。

noname#192382
noname#192382
回答No.3

No1の追加回答です。マクロは簡単ですよ。エクセルでシート1を入力してあるエクセルのブックに、新マクロを記録するということにして、空っぽのマクロを作っておき、次にそのマクロの編集の場面で、私のマクロをコピー貼り付けをしてあとはマクロを実行するだけです。

peaceland
質問者

補足

ご回答、大変にありがとうございます。 ん~~。やはり初心者の私にはハードルが高いようです。 optimumsoupさんが言われた通りに頑張ってみましたが難しいです。 >エクセルでシート1を入力してあるエクセルのブック と言うのは、シート1にあるリストでしょううか? >新マクロを記録するということにして これは、エクセルのツール→マクロ→新しいマクロの記録→マクロの記録でOKボタン? そして、ツール→マクロ→マクロ→編集?? このあたりから、と言うより初めから???です。 わからなくごめんなさい。m(_ _)m 具体的にやりたいことは、No.2の方の補足に書いた通りです。 もし、可能であれば、具体的にわかりやすくお願い出来ませんでしょうか。 お手数掛けますが、どうぞ宜しくお願い致します。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

次のようにすればよいでしょう。 シート1には作業列を設け、G2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(AND(ISNUMBER(A2),F2<>""),MAX(G$1:G1)+1,"") 次にシート2では次のようにします。 B1セルには次の式を入力します。 =IF(COUNTIF(Sheet1!$G:$G,ROUNDUP(ROW(A1)/5,0)*2-1)=0,"",INDEX(Sheet1!$A:$A,MATCH(ROUNDUP(ROW(A1)/5,0)*2-1,Sheet1!$G:$G,0))) 上の式を数式バー上でコピーして、その後にB2セルを選択し、数式バー上で「貼り付け」を行います。そこで、数式バー上で$Aを$Bに変更してEnterキーを押します。 B2セルには次の式を入力したことになりますね。 =IF(COUNTIF(Sheet1!$G:$G,ROUNDUP(ROW(A1)/5,0)*2-1)=0,"",INDEX(Sheet1!$B:$B,MATCH(ROUNDUP(ROW(A1)/5,0)*2-1,Sheet1!$G:$G,0))) 次にA3セルを選択して、数式バー上で貼り付けを行い、上記と同様に$Aを$Cに変更して式を確定します。 次にB3セルを選択して、同様に$Aを$Dに変更して式を確定します。 次にC3セルを選択して、同様に$Aを$Eに変更して式を確定します。 次にB4セルを選択して、同様に$Aを$Fに変更して式を確定します。 次にE1セルを選択して、数式バー上に貼り付けをして式を表示させた後で一部を変更して次のような式にして確定します。 =IF(COUNTIF(Sheet1!$G:$G,ROUNDUP(ROW(A1)/5,0)*2)=0,"",INDEX(Sheet1!$A:$A,MATCH(ROUNDUP(ROW(A1)/5,0)*2,Sheet1!$G:$G,0))) 上の式では-1が無くなっているだけです。 この式をコピーしてからE2セルを選択して貼り付けをし、$Aを$Bに変更して式を確定します。 次にD3セルを選択して、同様に$Aを$Dに変更して式を確定します。 次にE3セルを選択して、同様に$Aを$Eに変更して式を確定します。 次にF4セルを選択して、同様に$Aを$Fに変更して式を確定します。 その後にA1セルからF5セルまでを範囲として選択します。右クリックして「セルの書式設定」から「表示形式」の「ユーザー設定」で種類の窓には # と入力します。この操作はセルの中でデータが0の場合に表示をなくすためです。 つぎにA1セルからF5セルまでを選択した状態でF5セルの右下隅に表示される■のフィルハンドルをクリックして下方にドラッグします。 以上の操作によってお望みのデータをシート2に表示させることができます。

peaceland
質問者

補足

ご回答、大変にありがとうございます。 いや~~。驚きました! 出来るんですね。 すごいの一言です。 実はシート1のリストは縦2列になり、シート2は縦6列で下にまた6列、またその下に6列と下に行きます。 また、G列にNo.の様な数値が出ますが、シート1のリストもプリントアウトしますので、表示が出ないようにしたいのですが・・・。 リストの文字や数値を指定の場所へ飛ばしたいのが目的なのですが、やはり初心者の私にはハードルが高く難しいですね。 でも、出来ることがわかりスゴイと思いました。 今思えば、例ではなく最初からもっと詳しく言えば良かったと思います。 具体的に言いますと、シート1の1列目リストは、1・2・3の行に題名等が入り、A4にNo.の1から始まり、B4に品名、C4に数値A、D4に数値B、E4に数値C、F4に計が入り、1列目のリストの最後がA39まで来ます。 2列目リストは、H4にNo.の37から始まり、I4に品名、J4に数値A、K4に数値B、L4に数値C、M4に計が入り、2列目のリストの終わりがH38まで来て、最後にHI39に合計の文字、J39に数値Aの合計、K39に数値Bの合計、L39に数値Cの合計、M39に計の合計、又はJ39・K39・L39の合計。 シート2の1段目は、 DE26・27にNo.、CDE30に品名、C40に数値A、D40に数値B、E40に数値C、CD42・43に数値ABCの合計。 KL26・27にNo.、JKL30に品名、J40に数値A、K40に数値B、L40に数値C、JK42・43に数値ABCの合計。 RS26・27にNo.、QRS30に品名、Q40に数値A、R40に数値B、S40に数値C、QR42・43に数値ABCの合計。 YZ26・27にNo.、XYZ30に品名、X40に数値A、Y40に数値B、Z40に数値C、XY42・43に数値ABCの合計。 AFAG26・27にNo.、AEAFAG30に品名、AE40に数値A、AF40に数値B、AG40に数値C、AEAF42・43に数値ABCの合計。 AMAN26・27にNo.、ALAMAN30に品名、AL40に数値A、AM40に数値B、AN40に数値C、ALAM42・43に数値ABCの合計。 2段目は、 DE90・91にNo.、CDE94に品名、C104に数値A、D104に数値B、E104に数値C、CD106・107に数値ABCの合計。 KL90・91にNo.、JKL94に品名、J104に数値A、K104に数値B、L104に数値C、JK106・107に数値ABCの合計。 RS90・91にNo.、QRS94に品名、Q104に数値A、R104に数値B、S104に数値C、QR106・107に数値ABCの合計。 YZ90・91にNo.、XYZ94に品名、X104に数値A、Y104に数値B、Z104に数値C、XY106・107に数値ABCの合計。 AFAG90・91にNo.、AEAFAG94に品名、AE104に数値A、AF104に数値B、AG104に数値C、AEAF106・107に数値ABCの合計。 AMAN90・91にNo.、ALAMAN94に品名、AL104に数値A、AM104に数値B、AN104に数値C、ALAM106・107に数値ABCの合計。 1段目と2段目と同じ間隔で3段目、4段目と行き、シート1のリストのNo.71まで全品名が入るの(実際は、シート1のリストに数値が入らない箇所が結構あります)を想定いたしまして、シート2を作成したいのですが・・・。 言い忘れましたが、エクセルは2003です。 お手数をお掛け致しまして大変に申し訳ございませんが、何卒よろしくお願い致します。 尚、この様な質問はよろしくないようであれば、新たに質問いたします。

noname#192382
noname#192382
回答No.1

次のマクロを実行してみてください。シート2の書式が少し異なる形式になっていますが、これを直すのは次の段階にさせてください。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2010/10/5 ユーザー名 : ' Dim s1no As Integer, s2cno As Integer, kuno As Integer, kuname As String, v1 As Variant, v2 As Variant, v3 As Variant, kei As Variant, s2l1 As Integer, s2l2 As Integer, s2l3 As Integer, s2l4 As Integer s2cno = 1 For s1no = 2 To 10 Worksheets("sheet1").Activate If Cells(s1no, 6) >= 1 Then kuno = Cells(s1no, 1) kuname = Cells(s1no, 2) v1 = Cells(s1no, 3) v2 = Cells(s1no, 4) v3 = Cells(s1no, 5) kei = Cells(s1no, 6) Worksheets("sheet2").Activate s2l1 = (s2cno - 1) * 4 + 1 s2l2 = (s2cno - 1) * 4 + 2 s2l3 = (s2cno - 1) * 4 + 3 s2l4 = (s2cno - 1) * 4 + 4 Cells(s2l1, 2) = kuno Cells(s2l2, 2) = kuname Cells(s2l3, 1) = v1 Cells(s2l3, 2) = v2 Cells(s2l3, 3) = v3 Cells(s2l4, 2) = kei s2cno = s2cno + 1 Else End If Next ' End Sub

peaceland
質問者

お礼

ご回答、大変にありがとうございます。 初心者の私には、やはり難しいですね。 時間がある時に、挑戦したいと思います。

関連するQ&A

  • エクセルの事について、教えてください。

    エクセルの事について、教えてください。 ネットで色々探しましたが、やりたい事を見つける事が出来ませんでしたので、こちらに来ました。 エクセルでやりたいことは、次の通りです。 Sheet1には、県別リストがあります。 Aの縦にNo.(1~48)の数字 Bの縦に都道府県名(上から北海道・青森・~・鹿児島・沖縄) Cの縦に商品aの数 Dの縦に商品bの数 Eの縦に商品cの数 Fの縦に商品abcの合計 例) A1に1、B1に北海道、C1に○○商品、D1に△△商品、E1に□□商品、F1にC1+D1+E1=合計 A2に2、B2に青森県、C2に○○商品、D2に△△商品、E2に□□商品、F2にC2+D2+E2=合計 ↓    ↓       ↓      ↓       ↓      ↓    A46に46、B46に鹿児島県、C46に○○商品、D46に△△商品、E46に□□商品、F46にC46+D46+E46=合計 A47に47、B47に沖縄県、 C47に○○商品、D47に△△商品、E47に□□商品、F47にC47+D47+E47=合計 A48とB48に合計の文字、C48に○○商品の合計、D48に△△商品の合計、E48に□□商品の合計、F48にC48+D48+E48=合計 Sheet2は、今月ある○○県に売り上げがあれば、No.と県名。そして、どの商品(abc)がいくつ売れたかをメモのように入力します。(メモとは言え、あとでプリントアウトして使用します) Sheet2で県名・商品の数等を入力しますが、県の順番はばらばらです。 例えば、今月は青森・東京・宮城・広島・他県等で商品abcがいくつ売れた。 来月は大阪・静岡・新潟・福岡・他県等で商品abcがいくつ売れた。 Sheet2で入力した、県名・商品abcの数値をSheet1のリストに反映させたいのですが、このような事は出来ますでしょうか? 言葉にすると難しいですね。私のやりたい事、おわかりになりましたでしょうか? 私は簡単なリストの作成や合計、また数値を入力したら指定の場所へその数値を飛ばす事位しか出来ません。こんな私でも出来るかな~?(ちょっと心配・・・) 出来ましたら、具体的にわかりやすくご教授をお願い致します。エクセルは、2003です。 以上 宜しくお願い致します。

  • Excel(数値の非表示)

    日々の出費を管理する表を作っています。 A列は日付、B列C列D列は項目別の数値 E列はその日付の数値の合計(B1+C1+D1) F列はその日までの累計(A列ではE1=F1、B列以降はF1+E2) この表の翌日以降のE列、F列の数値を表示したくないのですがどうしたらよいでしょうか? E列に関しては、翌日以降はB列C列D列が未入力となり必ず0が入るので、オプションで「ゼロ値」のチェックをはずすことで対応しようと考えているのですが問題ないでしょうか? F列に関しては数値が0にはなりませんので関数を使うことになるかと思うのですが、それが分からず困っています。 初歩的な質問と思いますが宜しくお願いします。

  • シートA及びBの指定列に数値があればシートCに"〇

    シートAのA列に文字がありC列、D列に数値がある。シートCのA列の文字と同じ文字がシートAのA列にありC列もしくはD列数値があればシートCのC列に〇をつけたい。シートAのA列にシートCのA列と同じ文字がなければシートBのA列の同じ文字を探しC列もしくはD列数値があればシートCのC列に〇をつけたいのですがどなたか解る方宜しくお願いします。環境はoffice2013です。

  • エクセル:別表を参照しての文字列のコピーについて

    shigemitsuと申します。 よろしくお願い致します。 OS:Windows2000、Excel2002です。 すでに以下のような表(Sheet1とします)があります。 A1に文字列『ABC』、B1に文字列『ABC111』 A2に文字列『DEF』、B2に文字列『DEF222』           ・           ・           ・ A8に文字列『TUV』、B8に文字列『TUV888』           ・           ・ 別表Sheet2には”Sheet1”のA列の文字列が、ばらばらに並んでおります。 そこで、”Sheet1”のA列を参照して、Sheet2のB列に”Sheet1”のB列を移す事は可能でしょうか? ・・・すみません。うまく表現できません。 ”Sheet1”の表を見ながら、ひとつひとつSheet2のB列に打ち込めば良いのですが、大量にあるもので・・・ 良いやり方があればご教授願いたく、よろしくお願いいたします。

  • エクセル2003 #N/A含む複数シート数値合計

    複数のワークシートの数値の合計がうまく出ません。 A,B,C,Dという名前のシートのセルA2の数値の合計を 「集計」というシートのセルA3に出したいのですが (ちなみにA,B,C,DシートのセルA2にはvlookup関数がはいってます) 例えばシートBのセルA2の表示が#N/Aだと sum、sumif関数で合計を出そうとしても 「集計」シートのセルA3には#valueと出てしまいます。 うまく#N/Aをのぞいて数値の合計値を出す方法はありますか?

  • 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さん となるようにループする方法をご教授ください。 よろしくお願い致します。

  • エクセル指定日付の数値を別シートに反映させる方法

    先ほど別の質問を立てましたが、わかりにくかったので、再度掲載させていただきます。 数式をつくっておいて、ある箇所にデータを貼り付けたら、別シートに指定した期間の 数値が反映できるような数式を作りたいと考えています。 A1に「10/1」  (スタート) B1に「11/2」  (エンド) と入力がしてあり、 F12~120に10/1からランダムに10月の日付 G12~120に11/1からランダムに11月の日付 N12~120に数値が入っています。 A12~120には=「F12~120」という数式を B12~120には=「G12~120」という数式を C12~120には=「N12~120」という数式を いれて、反映をさせています。 普段触るところはF12~120・G12~120・N12~120の3つで データを毎回貼り付けています。 A1・B1に入れている数値と一致をしていれば色が変わるように書式設定をしています。 この2~120の中で対象となる色の変わる場所の数値部分(C12~120)の合計の数値を 別のシート「集計」のD1に反映をさせたいです。 そのようなことはできますでしょうか。 説明が下手で申し訳ありませんが どなたかご回答をよろしくお願いいたします。

  • エクセルの文字列の数値を足す

        A    B     C      D   合計 1  ああ8  いい8  ああ6  ああ2   8 と、10列くらいある行(A列からJ列まで)があります。 ひとつのセルに文字と数値が入っています。 で、「ああ8」と「いい8」以外の数値を足したいんです。 上の場合、C列の「ああ6」とD列の「ああ2」を足して「8」になります。 毎回、手作業で足しているのですが、結構な手間で。。 何かいい案があればと思い、こちらへ投稿させていただきました。 オフィス2007を使用しています。ご教授ください。

  • エクセル関数:右側の文字列を抜き出す方法

    エクセル初心者です。 文字列の抜き出す方法で悩んでいます。 たとえば、A1~A5までに下のような 文字列が順に入っているとします。 C:\abc\TEST1.DOC C:\abc\def\TEST2.DOC C:\abc\def\ghi\jkl\TEST3.DOC C:\abc\def\ghi\TEST4.DOC C:\abc\def\TEST5.DOC これらの文字列の一番右側の'\'以降の文字列 (TEST1~5.DOC)を、B1~B5のセルに 出したいと思っているんですが できるのでしょうか? RIGHT関数や、LEN関数、FIND関数を使って できそうな気がするのですが どうも良い方法が思いつきません。 よろしくお願いします。

  • マクロで別シートに数値を移したいのですが・・・

    タイトルにありますとおり、マクロを駆使し、数値を別シートに移したいのですが なにぶんマクロに関してほとんど経験、知識はありません。 毎回手動でコピーを繰り返しているのですが、なんとかマクロで自動コピーできればありがたいです^^; 方法としては、フォームのボタンにマクロを埋め込むような形にしたいと思っております。 以下のようなシートがあったとします。 シート1 (抽出内容”平均”)    A   B   C   D   E   F   G 1  回数 25 2  2   3   4   6   3   2   9   3 1行目に、回数とあります。今回は25回目のデータとします。 2行目に、同一シートの別表から抽出された数値が並びます。 この数値は別表でオートフィルで抽出された数字ですので、毎回変更されるものとします。 今回は仮に”平均”という内容で抽出したデータだとします。 シート1 (抽出内容”合計”)    A   B   C   D   E   F   G 1  回数 25 2  10 10  20  11  15  16  8   3 同じく、25回目、抽出内容”合計”として、オートフィルで抽出した数値です。 シート2     A   B   C   D   E   F   G   H 100 回数 平均(1) 2  3  4  6  3  2  9  101 25  平均(2) 102     平均(3)  103     合計(1)10 10 20 11 15 16 8 104     合計(2) 105     合計(3) 106 107 108 回数 平均(1) 109 26  平均(2) シート2は、シート1で抽出された数値をコピーした表です。 A列は今回の回数、25となっております。この数値はこれより上に24回分の表があり、今回が25回目という意味です。 107行目以降も26、27、28と回数は続いていますが、現状では25が最新とし、108行以降は数値はなく、空白とします。 それぞれ平均、合計共に、シート1で3回抽出し、それぞれ別の数値が入るものとします。 これまでは、シート1で抽出後、手動でコピーし、シート2の該当セルに貼り付ける、という作業でした。 シート1  →   シート2  のコピーにマクロを使用したいのですが 回数が25の場合、シート2でA列を検索し、さらに抽出内容が”平均”1回目だった場合 平均(1)にコピーし、2回目だった場合平均(2)にコピーする、といった具合です。 イメージとしては、シート1に、(1)、(2)、(3) と、それぞれ入ったリストボックスなどがあり [平均][合計] のそれぞれボタンがあり、(1)を選び、平均を押すと100行目の平均(1)に入り 合計を押すと、103行目の合計(1)に数値が入る。と、いうような感じです。 この説明で私の意図するところが伝わるか不安ではありますが、このような場合に使えるマクロの式がございましたら ご教示いただけませんでしょうか^^; 実際の表とは若干ちがいますが、大まかなイメージとしては上に書いてある通りです。

専門家に質問してみよう