エクセル初心者です。
お知恵をお貸しください。
例えば「預金」というシートのA1のセルに「会費」という文字と、B1のセルに123円という金額が入っているとすると、その隣の「会費」というシートのA1のセルに同じ「会費」という文字とB1のセルに123円という同じ金額が入るような式を組みたいのです。
「あいう」というシートには「会費」の他にもいろいろと項目があります。例えばA2「備品」B2「150円」という感じです。それぞれの「会費」「備品」というシートにそれぞれ当てはめるようにするにはどうしたらいいでしょうか?
わかりづらくてすいませんが、教えてください。

質問者からの補足コメント

  • すいません9行目の「あいう」というシートではなく「預金」というシートです…

      補足日時:2017/04/14 23:45

A 回答 (2件)

まず、各シートのどこかにシート名を入力するセルを用意してください。

仮にAA1とします。
関数によって表示させる事もできるようですが、ExcelOnlineでは使えない為試せません。
参考:https://kokodane.com/kan54.htm

まず試そうと思いつくのはVLOOKUPですが、この場合"会費"や"備品"が複数回出てくる為、
そのままでは使えません。
最初に出てきた"会費"を"会費-1"、2回目に出てきた"会費"なら"会費-2"といったように、重複しないものであらわす必要があります。
=A1&"-"&COUNTIF(A$1:A1,A1)
とすれば、「A1に入っているデータ」と「そのデータがA1からその行のA列までに何個あるか」を"-"でつないだものを表示する事ができます。

可能であればA列の左に新しく列を挿入し、これを用いれば、VLOOKUPで簡単に抽出する事ができます。
=VLOOKUP(AA$1&"-"&ROW(),預金!A:C,3,FALSE)
で「そのシート名に一致するデータが、預金シートのA列に、その行番目に出てきた行」の、C列のデータを表示させる事が可能です。(列を挿入したので、元のB列のデータがC列に表示されています)
A列のデータは常にシート名に一致しているはずなので、わざわざ抽出しなくても…

しかし、おそらく様式を変えることはできない場合が多いと思われます。
その場合はMATCHを使って、何行目のデータが一致するデータであるかを取得し、
その行番号を利用して、INDIRECTにて該当データを表示させましょう。
仮にC列に"会費-1"等を表示しているとします。
=INDIRECT("預金!B"&MATCH(AA$1&"-"&ROW(),預金!A:A,FALSE))
これで上記VLOOKUPの内容と同様の事ができました。

それぞれ必要なだけコピーしてくださいね。
該当数以上に表示させようとするとエラーになります。
必要であれば、エラーとなる場合は空白とする式も可能です。
    • good
    • 0
この回答へのお礼

ありがとう

ご回答ありがとうございました!
一度試してやってみます!

お礼日時:2017/04/15 00:45

こんばんは!



「預金」シートのA列項目名が入っているシートがあるのですね。
仮に「会費」シートの場合
A1セルに
=IFERROR(INDEX(預金!A$1:A$1000,SMALL(IF(預金!$A$1:$A$1000="会費",ROW($A$1:$A$1000)),ROW(A1))),"")

配列数式ですので、Ctrl+Shift+Enterで確定!
A1セルのフィルハンドルでB1セルまでコピー → そのまま下へコピー!

※ 「備品」シートの場合は数式内の
”会費”の部分を変えるだけです。

※ 本来であれば各シートの使っていないセルに「会費」とか「備品」など表示したい項目名を入力しておき
そのセルを参照するようにすれば同じ数式で対処できます。

※ 項目ごとのシートがあるのであれば
A列は表示させる必要がないような気がします。m(_ _)m
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

QシートAとシートBのあるセルの合計をシートCに出したい

Office2003のVBAを勉強中です。

2つのエクセルファイル(ファイルA、ファイルB)があります。
ファイルA、Bにはシートが一つづつあり、そこには同じフォーマットで表が書かれています。

ファイルA、Bのシートに書かれている表の合計を新規に作成したエクセルファイルCに書き込みたい場合、皆さんならどのようにされるでしょうか?

僕は下記のように考えました。
1.ファイルCを作成
2.ファイルAの対象シートをファイルCのシート1へコピー
3.ファイルBの対象シートをファイルCのシート2へコピー
4.ファイルCのシート3にシート1とシート2の合計を計算表示

「そんな手間な事をせずとももっと・・・」だとかあるようでしたら、
皆さんのご意見をお聞かせください。

それともう一つ、シート1の指定セルとシート2の指定セルの合計をシート3の指定セルに計算表示するのはどのようなロジックを書けばよいのでしょうか?

Aベストアンサー

こんばんは。

>Office2003のVBAを勉強中です。

私のいつもの持論なのですが、VBA勉強中は、なるべく、ワークシートのごちゃごちゃしたものには、手を出さないほうがよいですね。1年掛かるものが、2年になってしまいます。ワークシートを扱うと、結構つまらないことで振り回されるので、「ロジック」とは関係のないところに行ってしまいます。

とはいえ、実務上の問題は避けては通れないのですから、軽く流す程度にしたほうがよいと思います。

>僕は下記のように考えました。
1~4
それで良いとは思うけれど、それを現実化させるというのは、実は、意外とつまらない部分でつまづくことが多いかもしれません。

まったく、同じ造りのシートだとしたら、#3の[統合=Consolidation] が最も便利かなって思います。

ただ、元のデータのブックが開けてある状態なら、意外に単純な方式で出来ます。C列だけを計算すればよいのですね。

1~3行目まであるデータで、A列,B列が項目と明細が入っていて、C列が計算行です。

ひとつのSheet1は、
 A   B    C
日時  名前  金額
20061201  Aさん  100
20061202  Cさん  200
20061203  Bさん  100

同じようなシートで、金額だけ違うような場合は、

マクロは、以下のようになります。

Sub TestSample1()
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim newWb As Workbook
Set wb1 = Workbooks("TEST061.XLS")
Set wb2 = Workbooks("TEST062.XLS")

Set newWb = Workbooks.Add
With wb1.Worksheets("Sheet1")
'項目のコピー
 .Range("A1", .Range("A65536").End(xlUp).Offset(, 2)).Copy _
  newWb.Worksheets(1).Range("A1")
End With

With newWb.Worksheets(1)
  'C列に数式を作る
  .Range("A2", .Range("A65536").End(xlUp)).Offset(, 2).FormulaLocal _
   = "=[" & wb1.Name & "]Sheet1!RC +[" & wb2.Name & "]Sheet1!RC"
  '値貼り付け
  .Range("A2", .Range("A65536").End(xlUp)).Offset(, 2).Value = _
  .Range("A2", .Range("A65536").End(xlUp)).Offset(, 2).Value
  '合計を出す
  .Range("A65536").End(xlUp).Offset(1, 2).FormulaLocal = _
  "=SUM(" & .Range("A2", .Range("A65536").End(xlUp)).Offset(, 2).Address(0, 0) & ")"
 
End With
End Sub

なお、保存は手動でしてください。

こんばんは。

>Office2003のVBAを勉強中です。

私のいつもの持論なのですが、VBA勉強中は、なるべく、ワークシートのごちゃごちゃしたものには、手を出さないほうがよいですね。1年掛かるものが、2年になってしまいます。ワークシートを扱うと、結構つまらないことで振り回されるので、「ロジック」とは関係のないところに行ってしまいます。

とはいえ、実務上の問題は避けては通れないのですから、軽く流す程度にしたほうがよいと思います。

>僕は下記のように考えました。
1~4
それで良いとは思...続きを読む

Qエクセル、シートBからシートAのアクティブセルへ

シートBに社員表があり、ダブルクリックでシートAのアクティブセル(40文字くらい入る)へ名前が追加されるようにしたいのですが、何かいい方法がありますでしょうか?
例)
田中、佐藤、石川、・・・

シートBのダブルクリックで動くマクロに「シートAのアクティブセルへ文字を追加する」という処理がしたいです。

よろしくお願いいたします。

Aベストアンサー

こんばんは。

以下のマクロで如何ですか?
Sheet1以外のシートでダブルクリックした場合、
ダブルクリックしたセルの値をSheet1で最後に位置づけていたセルに”、”区切りで追加します。

ThisWorkbookに以下を貼り付けます。
この処理では"Sheet1"以外で処理する様にしています。
適当に条件変更してください。

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

'対象外の判定
If ActiveSheet.Name = "Sheet1" Then
Exit Sub
End If


'現在のシートを保存
Dim curSht As Worksheet
Set curSht = ActiveSheet

Application.ScreenUpdating = False '画面表示の停止

'Sheet1に切り替え
Sheets("Sheet1").Select
If ActiveCell = "" Then
ActiveCell = Target.Value
Else
ActiveCell = ActiveCell & "、" & Target.Value
End If

curSht.Select
Application.ScreenUpdating = True '画面表示の再開

Set curSht = Nothing

End Sub

こんばんは。

以下のマクロで如何ですか?
Sheet1以外のシートでダブルクリックした場合、
ダブルクリックしたセルの値をSheet1で最後に位置づけていたセルに”、”区切りで追加します。

ThisWorkbookに以下を貼り付けます。
この処理では"Sheet1"以外で処理する様にしています。
適当に条件変更してください。

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

'対象外の判定
If ActiveSheet.Name = "Sheet1" Then
...続きを読む

QA1セルにAと入力すると、A2セルに3000A3セルに2000A4セルに1000と表示させたい。

A1セルに「A」と入力する1回だけで、
A2セルに「3000」
A3セルに「2000」
A4セルに「1000」
A5セルに「合計数字」を表示させたいのですが、
式をご教授願いたいです。

よろしくお願いします。

Aベストアンサー

D1:G3
A500030001000
B500300130
C1200800300
A1にA,B,Cのどれかを入れる。
A2に =VLOOKUP($A$1,$D$1:$G$2,ROW(),FALSE)と入れて、
A4まで(G-D-1列数だけの行数)式を複写する。
結果
A1がBの場合A1:A4は
B
500
300
130

A1の空白の場合に対処して
=IF(A1="","",VLOOKUP($A$1,$D$1:$G$2,ROW(),FALSE))
が良いでしょう。
(既回答とほぼ同じ式ですが、1箇所違うところがあります。)

Aベストアンサー

書式>条件付き書式

セルの値が 次の値より小さい を選択
値は$B1とし、書式を設定。
設定したセルをコピーすればできませんか?

Qエクセル2002 シート1のA1のコピーをシート2のB1~B12にしたい。

まず、シート2のB1に 「='シート1'!A1」と設定し、無事コピーができました。
次に、そのセルをコピーして、B2~12にペーストしたら、式が勝手に変更されていて
B2が「='シート1'!A2」など、「='シート1'!A*」のアスタリスク部分の数字が変わってしまい
コピーができません。どのようにすれば、できるようになるのでしょうか?
別シートやセルで試してみましたが、同じ現象でした。
この作業を、相当回数しなけれいけないので、各セルに書式を手作業で行っていくことは
現実的でないので、効率の良い方法を教えて頂ければ幸いです。
(シートとセルは任意で実際には、表題のようにシンプルではありません)
また、基本的なミスがあればご指摘下さい。よろしくお願いします。

Aベストアンサー

質問に対する回答は、No1様の回答の通りなのですが、

>この作業を、相当回数しなけれいけないので
作業の内容によって、コピーしたときに変わってくれた方が良い場合とそうでない場合があるのではないでしょうか?
(全部同じ内容でよければ、必ずしも全てをシート1への参照にしなくても
 (シート2の)B1への参照にしておいても同じ結果が得られます)

コピーしたときに変わるか換わらないかをコントロールするには、「絶対参照」「相対参照」を理解しておくのがよろしいと思います。

以下、参考までに。
http://www11.plala.or.jp/koma_Excel/contents1/mame1006/mame100601.html
http://www.nct9.ne.jp/poporu/18.html
http://www.eurus.dti.ne.jp/~yoneyama/Excel/zettai.html


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報