• 締切済み

Excelで同じ値のデータの時のみ抽出(?)

複雑で説明するのが難しいのですがよろしくお願いします。 6000行の、時間と温度の表があります。 6500行の時間と電流の表があります。 二つの表の時間は精度がまちまちで、たまに違う時間を示している時があります。 二つの表の「同じ時間の時のみ、温度と電流を表示して、温度と電流の表にしたい」 のですが 1s 25℃ 3s 26℃ 4s 27℃ 5s 28℃ (これが6000行) と 1s 1mA 2s 2mA 4s 3mA 5s 4mA (これが6500行) という二つの表から 1s 25℃ 1mA 4s 27℃ 3mA 5s 28℃ 4mA という情報を書きだしたいのです。 回答お願いします。

みんなの回答

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

一旦設定すれば何等の操作をすることもなく新たなデータの入力に対応できる方法として関数のみを使って表示させる方法があります。例えば次のようにします。 シート1のA2セルから下方に時間、B2セルから下方に温度のデータがあるとします。C列には作業列を設け、C2セルには次の式を入力します。 =IF(COUNTIF(Sheet2!A:A,A2)>0,MAX(C$1:C1)+1,"") その後にC2セルをコピーします。名前ボックスのC2表示をC2:C7000のように書き換えます。これでEnterすればそれらの範囲が選択されますので右クリックで「貼り付け」をします。C2セルを下方にオートフィルドラッグすることと同じ操作になります。 シート2のA2セルから下方には時間、B2セルから下方には電流のデータがあるとします。 そこでお望みの表ですが別のシートのA2セルには次の式を入力します。 =IF(ROW(A1)>MAX(Sheet1!$C:$C),"",IF(COLUMN(A1)=1,INDEX(Sheet1!$A:$A,MATCH(ROW(A1),Sheet1!$C:$C,0)),IF(COLUMN(A1)=2,INDEX(Sheet1!$B:$B,MATCH(ROW(A1),Sheet1!$C:$C,0)),IF(COLUMN(A1)=3,INDEX(Sheet2!$B:$B,MATCH($A2,Sheet2!$A:$A,0)),"")))) シート1と同様にA2セルをコピーしたのちに名前ボックス上で例えばA2:C7000などとしてから「貼り付け」を行います。これでA列には時間、B列には温度、C列には電流が表示されます。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

6000行と6500行の,それぞれ1行目に「時刻」「温度」「電流」と記入し,2行目から実データを列記します(ふつー当然の作表ですよね)。 それから。 温度と電流は「数値」のみセルに記入し,「℃」や「mA」は必要なら「表示形式」によって表示させます #Ctrl+Hで置換を開始する ℃ を 何も入力しない に全て置換する など #セル範囲を右クリックしてセルの書式設定の表示形式のユーザー定義を選び 0.0℃ 0.0"mA" などのように設定する 手順: 新しいシートを1枚用意 ご利用のエクセルのバージョンが書かれていませんが,データメニュー(データタブ)の「統合」を開始 6000行の表範囲を追加 6500行の表範囲を追加 上端行,左端列にチェックしてOKすると 1s 25℃ 1mA 2s    2mA 3s 26℃  4s 27℃ 3mA 5s 28℃ 4mA のように,無いモノは無い状態で結合した表ができあがります。 このままだと困るなら,更にオートフィルタを取り付けて 温度列で空白で絞り,温度が空白の行をまとめて選んで行削除 改めて電流列で空白で絞り,電流が空白の行をまとめて選んで行削除 でフィルタを解除すれば直接ご質問の結果が残ります。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 色々方法はあると思います。 一例です。 温度のデータがSheet1・電流のデータがSheet2にあり、データはどちらも2行目からあるとします。 (1)関数での方法 Sheet1のC2セルに =IF(COUNTIF(Sheet2!A:A,A2),VLOOKUP(A2,Sheet2!A:B,2,0),"") という数式を入れC2セルのフィルハンドルでダブルクリック A~C列すべてを範囲指定 → データ → オートフィルタ → C列の下向き▼ → 「空白以外のセル」 これで希望に近い形にならないでしょうか? (2)それぞれのSheetに手を加えたくない場合はVBAでSheet3に表示させる方法 Alt+F11キー → 画面左にある「This Workbook」をダブルクリック → VBE画面が出ますので ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i, j As Long Dim ws1, ws2, ws3 As Worksheet Set ws1 = Worksheets("sheet1") Set ws2 = Worksheets("sheet2") Set ws3 = Worksheets("sheet3") For i = 2 To ws1.Cells(Rows.Count, 1).End(xlUp).Row For j = 2 To ws2.Cells(Rows.Count, 1).End(xlUp).Row If ws1.Cells(i, 1) = ws2.Cells(j, 1) Then With ws3.Cells(Rows.Count, 1).End(xlUp).Offset(1) .Value = ws1.Cells(i, 1) .Offset(, 1) = ws1.Cells(i, 2) .Offset(, 2) = ws2.Cells(i, 2) End With End If Next j Next i End Sub 'この行まで こんなんではどうでしょうか?m(_ _)m

関連するQ&A