• ベストアンサー

Excelで2列の数値から合致する値とそれに付随するテキストの行を同行に移動する方法

こんにちは。Excel2000を使用しております。 以前似たような質問をしたのですが、その応用で質問です。 A列     B列     C列 100     100     AAA 101     102     BBB 102     104     CCC 103     105     DDD 104     105 上記のような場合、B、C列の数値を、A列内の合致する数値と同列に持って行きたいのです。つまり、 A列     B列     C列 100     100     AAA 101     102     102     BBB 103    104     104     CCC 105     105     DDD のようにしたいのですが、どのようにすれば良いのでしょうか? 以前の質問で、A列とB列だけであれば、 =IF(ISERROR(MATCH(A1,$B$1:$B$4,0))=FALSE,A1,"") の巻数で可能であるのは理解しています。 そこに、さらにC列の一緒に移動させることは出来ますでしょうか? 宜しくお願いいたします。

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

データ先頭行の任意の列に以下の式を貼り付けて、下方向とその右側の列にコピーしてください =IF(ISNA(MATCH($A1,$B$1:$B$500,0)),"",INDEX(B$1:B$500,MATCH($A1,$B$1:$B$500,0))) データは500行まであるものとしています。行数が多いなら500の部分を修正してください(3カ所あります)

oyaoya2006
質問者

お礼

ご回答有り難うございます。 上記の方法で、解決できました! 有り難うございましたm(_ _)m

その他の回答 (2)

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

マクロで書くとこんな感じでしょうか。 Sheet1のタブを右クリックして「コードの表示」でVBAの画面を出し、以下のマクロを貼り付けて実行してみてください。 Sub 行を揃える()   Dim A_cell As Range, B_cell As Range   Set B_cell = Range("B65535").End(xlUp)   If B_cell Is Nothing Then     Exit Sub   End If    Do     Set A_cell = Range("A:A").Find(B_cell.Value)     If Not A_cell Is Nothing Then       A_cell.Offset(0, 1) = B_cell.Value       A_cell.Offset(0, 2) = B_cell.Offset(0, 1).Value       B_cell.ClearContents       B_cell.Offset(0, 1).ClearContents     End If     If B_cell.Row = 1 Then       Exit Do     End If     Set B_cell = B_cell.Offset(-1, 0)   Loop End Sub

oyaoya2006
質問者

お礼

ご回答有り難うございました。 マクロ自体が理解できておらず、申し訳ありません。 しかし、上記の方法で解決出来ました。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

次の方法は如何でしょうか。 ・シート1に元リスト ・シート2のA列にはシート1のA列がコピー シート2のB1セルに次の数式を設定して、縦横にコピーして下さい。 =IF(COUNTIF(sheet2!$B:$B,$A1)=0,"",VLOOKUP(A1,sheet2!$B:$C,COLUMN()-1,0))

oyaoya2006
質問者

補足

ご回答ありがとうございます。 試してみたのですが、 「数式が計算できません。」とエラーが出ました。 そして 「循環参照の基になるセルを確認する」という ヘルプ項目が表示されてしまいました。

関連するQ&A

専門家に質問してみよう