グッドデザイン賞を受賞したウォーターサーバー >>

A列のデータとB列のデータが紐付いている時C列の値に対応するA列のデータを
他の列に表示するにはどのような方法が有るでしょうか

   A列   B列  C列  D列
1行目 文字列1 数字列1 数字列7 文字列7
2行目 文字列2 数字列2 数字列4 文字列4
3行目 文字列3 数字列3 数字列1 文字列1
4行目 文字列4 数字列4 数字列10 文字列10
5行目 文字列5 数字列5 数字列3 文字列3
6行目 文字列6 数字列6 数字列12 文字列12
7行目 文字列7 数字列7
8行目 文字列8 数字列8
 ・      ・    ・
 ・      ・    ・

A 回答 (1件)

こんにちは!



D列に結果を表示したいのですね?
この場合はINDEX関数とMATCH関数を併用します。
D1セルに
=IFERROR(INDEX(A:A,MATCH(C1,B:B,0)),"")

という数式を入れ下へフィル&コピーしてみてください。m(_ _)m
    • good
    • 0
この回答へのお礼

有難うございました。うまくいきました。感謝です。

お礼日時:2017/09/13 13:21

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

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

QExcel 一括並べ替えについて

A30からY47の範囲で一括並べ替えをしたいのですが
マクロを組めば画像(矢印下の図表)のように並び替える事は可能でしょうか?

毎回コピーペーストでやっていますが、流石に時間ばかり掛かってしんどいです。

マクロや関数などの知識はありません。

知識が必要でしたら、学習用のサイトなども併せてご紹介をお願いします。



※画像が小さくてわかりにくいかもしれませんがどうぞよろしくお願い致します。

Aベストアンサー

No7です。補足了解しました。
以下のマクロを標準モジュールに登録してください。
-----------------------------------------------
Option Explicit
Public Sub 並べ替え()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim row1 As Long
Dim col1 As Long
Dim row2 As Long
Dim col2 As Long
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
sh2.Columns("Z").Clear
row2 = 1
For row1 = 30 To 47
For col1 = 1 To 25
sh2.Cells(row2, "Z").Value = sh1.Cells(row1, col1).Value
row2 = row2 + 1
Next
Next
Call sh2.Range("Z1:Z" & row2 - 1).Sort(Key1:=sh2.Range("Z1"), Header:=xlNo)
row2 = 1
For row1 = 30 To 47
For col1 = 1 To 25
sh2.Cells(row1, col1).Value = sh2.Cells(row2, "Z").Value
row2 = row2 + 1
Next
Next
sh2.Columns("Z").Clear
MsgBox ("完了")
End Sub
------------------------------------------------------------------------

No7です。補足了解しました。
以下のマクロを標準モジュールに登録してください。
-----------------------------------------------
Option Explicit
Public Sub 並べ替え()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim row1 As Long
Dim col1 As Long
Dim row2 As Long
Dim col2 As Long
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
sh2.Columns("Z").Clear
row2 = 1
For row1 = 30 To 47
For col1 = 1 To 25
sh2.Cel...続きを読む

Q原価計算表を作りたいです。

ケーキ屋です。原材料を登録して、商品ごとに使用量を入力し、原価を出して、販売価格を決めたいと考えています。商品が何%で販売すれば利益がどのくらいかすぐにわかるものを作りたいです。エクセルは苦手です。初心者同然でも作ることができますか?作り方を教えていただきたいです。

Aベストアンサー

原価計算表をキーワードにネットを検索すればサンプルが見つかります。
たとえばこちら。
http://officeut.blog72.fc2.com/blog-entry-42.html

Qエクセルの重複データを見つけて統合したいです。

みなさんお忙しいところすみません、教えてください。

AとA‘という2つの表があります。データは行で1700件ほどです。
どちらの表にも
エクセルのA列は識別番号で共通の数字が並んでいます。

Aの表には、ABCDEの列で作られています。
A‘の表にはABCDEは同じ内容のセルで、FGH列は別な内容のセルがあります。

A列の識別番号の1700件のなかで、ABCDEを持つ人に、FGHを持つ人を
合成させるためには

どのようにしたらいいでしょうか。

Aベストアンサー

シート名に'は使え無いので
A表をSheet1、A'表をSheet2とすると

Sheet1のF2、G2、H2に以下の関数を入れて、下までコピペする
F2:=VLOOKUP(A2,Sheet2!$A$2:$H$1701,6,FALSE)
G2:=VLOOKUP(A2,Sheet2!$A$2:$H$1701,7,FALSE)
H2:=VLOOKUP(A2,Sheet2!$A$2:$H$1701,8,FALSE)

Qエクセル 条件を満たした場合に該当分を抽出する関数

エクセルの関数についての質問です。
色々調べましたがなかなか上手くいかず、お知恵拝借できますと幸いです。

<前提>
◆1つ目のシートに、名前、書類の送付日、返送日等の情報がある

<やりたいこと>
◆別のシートに、返送日がブランクのものをピックアップし、表を作成したい
(1つ目のシートに50人分の名前があり、そのうち3人が送付済・返送待ちである場合、該当の3人の名前、送付日、返送日(ブランク)を別のシートで抽出し、リスト化したい)

なお、単純にオートフィルタで返送日がブランクのものを選び、リストを整えればいいのですが、この場合1つ目のシートの情報はシステムからエクセルに落としたデータで、名前や送付日の他にもたくさんの項目があります。
そのため、毎回表を整える際に不要な項目(列)を適宜削除せねばなりません。
そうではなく、1つ目のシートにデータを貼り付けさえすれば、2つ目のシートに該当分の該当セルがピックアップされるような関数を知りたく存じます。

IF関数やAND関数を使うのかと考えましたが、道半ばで分からなくなってしまいました。ご教示いただけますと幸いです。
また、上記説明にて分かりづらい点がありましたらご指摘願います。

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

エクセルの関数についての質問です。
色々調べましたがなかなか上手くいかず、お知恵拝借できますと幸いです。

<前提>
◆1つ目のシートに、名前、書類の送付日、返送日等の情報がある

<やりたいこと>
◆別のシートに、返送日がブランクのものをピックアップし、表を作成したい
(1つ目のシートに50人分の名前があり、そのうち3人が送付済・返送待ちである場合、該当の3人の名前、送付日、返送日(ブランク)を別のシートで抽出し、リスト化したい)

なお、単純にオートフィルタで返送日がブランクのものを...続きを読む

Aベストアンサー

No.1です。

画像通りに配置だとします。
Sheet2の7行目必要項目は入力済みだという前提です。

Sheet2のB8セルに
=IFERROR(INDEX(Sheet1!$A$15:$X$1000,SMALL(IF((Sheet1!$T$15:$T$1000>0)*(Sheet1!$U$15:$U$1000=""),ROW($B$15:$B$1000)-14),ROW(A1)),MATCH(B$7,Sheet1!$A$14:$X$14,0)),"")

前回同様配列数式なので、Ctrl+Shift+Enterで確定!
B8セルのフィルハンドルで列・行方向にコピー!
最後に日付列の表示形式を整えて完了!

前回も記載したように参照先が空白の場合「0」が表示されます。
Excelのオプションから「ゼロ値のセルに・・・」のチェックを外してください。

尚、チェックを外すと表内に「0」を表示しなけばならないセルも空白になります。
その場合はかなり長くなりますが、数式で処理する必要があると思います。

=IFERROR(IF(INDEX(Sheet1!$A$15:$X$1000,SMALL(IF((Sheet1!$T$15:$T$1000>0)*(Sheet1!$U$15:$U$1000=""),ROW($B$15:$B$1000)-14),ROW(A1)),MATCH(B$7,Sheet1!$A$14:$X$14,0))="","",INDEX(Sheet1!$A$15:$X$1000,SMALL(IF((Sheet1!$T$15:$T$1000>0)*(Sheet1!$U$15:$U$1000=""),ROW($B$15:$B$1000)-14),ROW(A1)),MATCH(B$7,Sheet1!$A$14:$X$14,0))),"")

同じく配列数式です。

といった感じになると思います。m(_ _)m

No.1です。

画像通りに配置だとします。
Sheet2の7行目必要項目は入力済みだという前提です。

Sheet2のB8セルに
=IFERROR(INDEX(Sheet1!$A$15:$X$1000,SMALL(IF((Sheet1!$T$15:$T$1000>0)*(Sheet1!$U$15:$U$1000=""),ROW($B$15:$B$1000)-14),ROW(A1)),MATCH(B$7,Sheet1!$A$14:$X$14,0)),"")

前回同様配列数式なので、Ctrl+Shift+Enterで確定!
B8セルのフィルハンドルで列・行方向にコピー!
最後に日付列の表示形式を整えて完了!

前回も記載したように参照先が空白の場合「0」が表示されます。
Excelのオ...続きを読む

QExcelで質問です、宜しくお願いいたします

条件の式です。ご教授お願いいたします。

項目欄①(A~E)
項目欄②(1級~6級)
所要時間①
所要時間②

以上の条件項目があり、当てはまる条件によりポイントが加算するとします。

その1)
当たる条件は、項目欄①が、A、C、Eであり、
項目欄②が、1級、2級であり、
所要時間①が50時間以上、
所要時間②が150時間以上である。

これら上記の条件を含めるものには10ポイント付与。

その2)
項目欄①が、A、C、Eであり、
項目欄②が、1級、2級であり、
所要時間①が50時間未満、
所要時間②が150時間未満である。

これら上記の条件を含めるものには5ポイント付与。

その3)
その1、その2条件を満たさないものにはポイント付与なし。

どのように組み合わせると良いのか、頭がこんがらがっております。
どうかどうか、ご教授の程、宜しくお願いいたします。

Aベストアンサー

No.3です。すべて満たさない時が負になってしまうので
=MAX(0,OR(A2={"A","C","E"})*OR(B2={"1級","2級"})*10-OR(C2<50,D2<150)*5)
にしないとまずかったです

その2)の所要時間が(文章通りの)AND条件でのみ成立するなら
=OR(A2={"A","C","E"})*OR(B2={"1級","2級"})*INDEX({5,0,10},(C2>=50)+(D2>=150)+1)

Q2シートの必要なデータの抽出

2つのシートの必要なデータの抽出をしたいのですがオートフィルターやピボットテーブルを使用しない方法を教えてください。

シート1:靴サイズ注残データ

商品コード 商品名 受注日付 受注№ 得意先コード 23 23.5 24 24.5 25
104210 黒7枚 2017/1/31 43310 2130010
104240 白7枚 2017/1/31 43310 2130010 5 5 10 10 10
107010 特製3枚 2017/3/6 44551 1200030

シート2:在庫データ

コード 商品名 倉庫名 サイズ 数量
104240 白7枚 祭受注 23   6
104240 白7枚 祭受注 23.5  3
104240 白7枚 祭受注 24   5
104240 白7枚 祭受注 24.5 8
104240 白7枚 祭受注 25 4
104240 白7枚 祭受注 25.5 1
104240 白7枚 祭受注 26 3
104240 白7枚 祭受注 27 21
104240 白7枚 祭受注 28 2

別シートに下記の
検索>商品コード
   104240

   商品コード 商品名 受注日付 受注№ 得意先コード 23 23.5 24 24.5 25
注残データ
在庫データ

マクロか関数を使って集計できますか?

2つのシートの必要なデータの抽出をしたいのですがオートフィルターやピボットテーブルを使用しない方法を教えてください。

シート1:靴サイズ注残データ

商品コード 商品名 受注日付 受注№ 得意先コード 23 23.5 24 24.5 25
104210 黒7枚 2017/1/31 43310 2130010
104240 白7枚 2017/1/31 43310 2130010 5 5 10 10 10
107010 特製3枚 2017/3/6 44551 1200030

シート2:在庫データ

コード 商品名 倉庫名 サイズ 数量
104240 白7枚 祭受注 23   6
104240 白7枚 祭受注 23.5  ...続きを読む

Aベストアンサー

こんにちは

>マクロか関数を使って集計できますか?
両方とも可能だと思います。

結果は上詰めで表示したいのだと想像しますので、関数の場合は作業列を設けた方が簡単です。
作業列なしでも可能ですが、関数式が複雑になるので、把握するのが面倒かも知れません。
方法は両方とも説明されている以下をご参考に。
http://www.geocities.jp/chiquilin_site/data/060322_extraction.html

マクロの場合は順にループで参照して行けば良いだけですが・・・
>オートフィルターやピボットテーブルを使用しない方法を~~
とのことですが、オートフィルタを利用した例
(処理後に、もとに戻していますのでわかりません)
http://plus1excel.web.fc2.com/learning/l301/t1802.html
他にも、LookUpやFindを利用する方法も考えられると思います。

普通にデータを順に探してゆくのなら
http://vba.ti-da.net/e2483985.html


上記の例は、マクロでも関数の場合も一つのシートから抽出する例になっています。
ご質問は二つのシートが対象なので、それぞれ少しずつ工夫が必要になります。
マクロの場合は二つのシートで同様の処理を繰り返すようにすればよいですが、関数の場合は(上詰めにするなら)一つ目のシートの該当数を超えたらたら二つ目のシートが対象になるように条件文で設定しておく必要があるので、式はさらに長くなりますね。
(抽出と同様に、こちらも処理を分割して、作業列などにそれぞれのシートの該当行を上詰めでピックアップしてから合体させるなどとすると、比較的簡単になると思います。)

こんにちは

>マクロか関数を使って集計できますか?
両方とも可能だと思います。

結果は上詰めで表示したいのだと想像しますので、関数の場合は作業列を設けた方が簡単です。
作業列なしでも可能ですが、関数式が複雑になるので、把握するのが面倒かも知れません。
方法は両方とも説明されている以下をご参考に。
http://www.geocities.jp/chiquilin_site/data/060322_extraction.html

マクロの場合は順にループで参照して行けば良いだけですが・・・
>オートフィルターやピボットテーブルを使用しない方法を...続きを読む

Qエクセル 関数 曜日

エクセルで月・水・金(不定期休みを除く)のみ10,000と入力されるようにしたいのですが、はたして可能でしょうか?

A列1行目から下にその月の1日からの日付
B列は=TEXT(A1,"AAA")を下にフィル
C列に数値を出したい(10,000)

E1:E10はその月の不定期休みの日付(曜日関係なく)を入れています。

IF関数とWEEKDAYでできるのでしょうか?
正解を教えてほしいです。
宜しくお願いします。

Aベストアンサー

こんにちは!

A列のシリアル値を利用すれば大丈夫だと思います。

C1セルに
=IF((WEEKDAY(A1)<7)*(MOD(WEEKDAY(A1),2)=0)*(COUNTIF(E$1:E$10,A1)=0),10000,"")

としてフィルハンドルで下へコピー!

こんな感じではどうでしょうか?m(_ _)m

QEXCELで日別に分かれているシートの平日だけ(または特定の曜日だけ)の合計を出したい

よろしくお願いいたします。
集計表1708.xlsxファイル、シートが「1、2、3…31」となっており、それぞれのシートの中に
A1…日付
A2…weekday関数でA1を参照(月曜日を1とする)
A4…a時間
A5…b時間
A6…c時間

B4…a時間の値(数値)
B5…b時間の値(数値)
B6…c時間の値(数値)
となっております。
1日から31日までに取得した時間が入っておりますが、
①平日のみ
②土曜日のみ
③土日祝のみ(祝日はweedkayのところでifを追加し、祝日の場合は値1を表示)
の数値を「まとめシート」で取得したいのです。
なお、入っている数値等の位置は変わることはありません。(串刺しをしてみたのですがうまくいきませんでした)

無理というのであればあきらめるのですが、詳しい方がいらっしゃいましたらご教授頂けますと助かります。なお、weekday関数を使っていますが、使用しなくても大丈夫です。
どうぞよろしくお願いいたします。

Aベストアンサー

No.1です。

いずれにしても関数や串刺し計算では難しいと思いますので、
↓の画像のような配置でのVBAにしてみました。
左側が各日のシートで右側が「まとめシート」とします。

尚、各日のB2セルは単純にWEEKDAY関数で
=WEEKDAY(A1)
とし、日曜日始まりとしています。
(祝日に関しては処理していませんが、数式などで「1」になるようにしてください)
標準モジュールです。

Sub Sample1() '//この行から//
Dim i As Long, k As Long, wS As Worksheet
With Worksheets("まとめシート")
.Range("B2:D4").ClearContents
For k = 1 To Worksheets.Count
Set wS = Worksheets(k)
If wS.Name <> .Name Then
For i = 2 To 4
Select Case wS.Range("B1")
Case 7
With .Cells(i, "C")
.Value = .Value + wS.Cells(i + 2, "B")
End With
Case 1
With .Cells(i, "D")
.Value = .Value + wS.Cells(i + 2, "B")
End With
Case Else
With .Cells(i, "B")
.Value = .Value + wS.Cells(i + 2, "B")
End With
End Select
Next i
End If
Next k
End With
End Sub '//この行まで//

※ どうしても関数で!となると
コツコツIF関数のネストで各シートのB2セルの値を分岐 → 該当セルにプラス!
といった作業になるのではないでしょうか?
そこまでやる気力も体力もありませんが・・・m(_ _)m

No.1です。

いずれにしても関数や串刺し計算では難しいと思いますので、
↓の画像のような配置でのVBAにしてみました。
左側が各日のシートで右側が「まとめシート」とします。

尚、各日のB2セルは単純にWEEKDAY関数で
=WEEKDAY(A1)
とし、日曜日始まりとしています。
(祝日に関しては処理していませんが、数式などで「1」になるようにしてください)
標準モジュールです。

Sub Sample1() '//この行から//
Dim i As Long, k As Long, wS As Worksheet
With Worksheets("まとめシート")
...続きを読む

Q関数について教えてください、参照した番号に属する内容を抽出して表にしたい。

はじめまして。
データシートから表を作りたいと思っているのですが、
エクセルが苦手でして、ご教授願いたいです。

シート1のA列にはID番号があり、B以降の列にはそれぞれサイズが入っています。
ID番号によってそれぞれ違う項目に内容が入っているのですが、
それをシート2でID番号を入力したらID番号に属するものだけまとまった表に生成したいと思っています。

やりたいこと
・シート1にデータが入りシート2でID番号によって表を生成
・シート2に参照するID番号を入力
・参照したID番号(同じ番号数分)の行にあるものだけを抽出して並べる(空セルは除外)
・抽出したセル(内容)の一番上にある項目名(1の行)を抽出

使用エクセル:Excel Mac 2011
宜しくお願いいたします。

Aベストアンサー

No.2です。

配列数式はPCにかなりの負担を掛けます。
列全体とか広い範囲を対象範囲としてしまうと計算速度が極端に落ちますので、
とりあえず対象範囲はSheet1のA1~Z1000の範囲としてみました。

Sheet2のA1セル(配列数式です)に
=IFERROR(INDEX(Sheet1!$B1:$Z1,SMALL(IF(OFFSET(Sheet1!$B1:$Z1,MATCH($A$7,Sheet1!$A1:$A1000,0)-1,,1)<>"",COLUMN($B1:$Z1)-1),COLUMN(A1))),"")

としてフィルハンドルで右へずぃ~~~!っとコピー!

A2セル(同様に配列数式です)に
=IFERROR(INDEX(Sheet1!$B$1:$Z$1000,SMALL(IF(Sheet1!$A$1:$A$1000=$A$7,ROW($A$1:$A$1000)),ROW(A1)),MATCH(A$1,Sheet1!$B$1:$Z$1,0)),"")

として列・行方向にフィルハンドルでコピーしてみてください。

こんな感じではどうでしょうか?m(_ _)m

No.2です。

配列数式はPCにかなりの負担を掛けます。
列全体とか広い範囲を対象範囲としてしまうと計算速度が極端に落ちますので、
とりあえず対象範囲はSheet1のA1~Z1000の範囲としてみました。

Sheet2のA1セル(配列数式です)に
=IFERROR(INDEX(Sheet1!$B1:$Z1,SMALL(IF(OFFSET(Sheet1!$B1:$Z1,MATCH($A$7,Sheet1!$A1:$A1000,0)-1,,1)<>"",COLUMN($B1:$Z1)-1),COLUMN(A1))),"")

としてフィルハンドルで右へずぃ~~~!っとコピー!

A2セル(同様に配列数式です)に
=IFERROR(INDEX(Sheet1!$B$1:$Z$1000,S...続きを読む

QExcel.名簿一覧表から別シートの領収書一覧表で印刷してるのですが,名簿を1名削除すると領収書の名

Excel.名簿一覧表から別シートの領収書一覧表で印刷してるのですが,名簿を1名削除すると領収書の名前のセルにエラーが出るだけで領収書1枚は削除されないです。領収書も詰めたり逆に名簿を追加したら領収書も追加するように。領収書シートには文字列.MID関数が入ってます。素人初心者

Aベストアンサー

削除する行の次の行から表の一番下+空白の行を1行までコピーして、削除する行の上に貼り付けてはどうですか?
例:削除対象が4行目の場合、5行目以下をコピー、4行目に貼り付け


人気Q&Aランキング