• ベストアンサー
  • 困ってます

Excelで列に入っているデータを行に展開する方法

添付画像のように、Excelシート上のA列に、店名、住所、電話番号が全て入っている状態を、A列に商店、B列に住所、C列に電話番号というように振り分けたいです。 シート上のデータは、既に振り分けてあるものと振り分けていないものが混在しています。 振り分けていないものは、店名と電話番号だけ、店名と住所と電話番号といったパターンがあります(他に、店名とメールアドレスだけの様なパターンも)。 店名+電話番号、店名+住所+電話番号 のパターンはある程度かたまっているため、Sheet上で範囲を手動で選択して、行への展開を実行したいと思っています。 関数かVBAで効率よく実行する方法を教えてください。 Excel2010です。

共感・応援の気持ちを伝えよう!

  • 回答数5
  • 閲覧数493
  • ありがとう数5

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

  • ベストアンサー
  • 回答No.1
  • MackyNo1
  • ベストアンサー率53% (1521/2850)

3行1セットの場合 例えばA10セルから3行ごとにデータがあるなら、B10:D10セル(横に3つのセル)を選択して「=TRANSPOSE(A10:A12)」と入力しCtrlキーとShiftキーを押しながらEnteします。 再度B10:D12セル(3行3列)を選択し、下方向にオートフィルすればご希望のデータが得られますので、そのままCtrl+Cでコピーし、右クリック「形式を選択して貼り付け」で「値」にしたデータを新規シートのA列に貼り付ければ完成です。 2行ごとのデータは、同様にB10:C10セルを選択し「=TRANSPOSE(A10:A11)」と入力しCtrlキーとShiftキーを押しながらEnteします。 再度B10:C11セル(2行2列)を選択し、下方向にオートフィルして、値貼り付けしたデータのB列をC列に移動すればよいことになります。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。 No2ご回答の方に補足していますように、URLやEmailという例外で追加されているものが多く、中々オートフィルでも手間なことがわかり、マクロで対応します。

質問者からの補足

ありがとうございます。 3×3の方は適用できました。 ただ、2行2列のケースでは、真ん中を一つ飛ばして横に展開したいのですが、方法あるでしょうか。 A10→B10 A11→C10 という様に変換したいです。

関連するQ&A

  • エクセルのデータ、1行を複数行に展開し直したいです。

    うまく説明できませんが、筆まめの住所録データをCSV形式にてエクセルに落とし込みました。 その状態では、宛名~備考までの項目が約20、A2~S2に1行に 展開されています。 住所録を社内で回覧できる状態にしたいのですが、今のままでは 項目が多すぎるため、1件について3行程度に項目を折りたたんで 展開したいです。  宛名|敬称|担当者|郵便番号|住所|番地|ビル名|備考    ↓    宛名 | 敬称 |担当者  郵便番号 | 住所 | 番地 | ビル名  備考  という風に。 別シートに「=sheet1!A2」「=sheet1!B2」というように配置し、 以下ドラックすると、データが2件飛ばしになってしまいます。 簡単に展開しなおせる方法を教えて下さい!! ずっと調べているのですが、一向に分からずに煮詰まってしまいました。

  • エクセルで照合したデータのコピペ

    照合したエクセルデータ結果を別シートにコピペする方法を教えてくだ さい。 【設問】 エクセル1には A列に電話番号が100件入っています。 エクセル2には A列に電話番号が100件B列に住所が100件 入っています。 電話番号の 内容は一緒ですが、エクセル1と2では並び方が違います。 VLOOKUP関数を使って、エクセル1の電話番号に対応する住所情報を記 入しました。 私用した関数は下記の通りです。 =IFERROR(VLOOKUP(A1,[Book2.xlsx]Sheet1!A:B,2,FALSE),"該当なし") その住所情報を別のエクセルシート3にコピペする方法を教えてくださ い。

  • Excel シート間のデータの照合

    Excelで、シート間のお客様データ(だいたい各1万件)を照合します。下記は現在の照合方法ですが、これでは時間がかかるうえ手作業が多く発生しミスにつながります。頻繁に行う作業なので、関数でも、マクロでも、とにかくもう少し簡単にできる方法がありましたら、どうぞご教授ください。よろしくお願いします!! 【目的】 シート「sheet2008」には2008年度のデータ。シート「sheet2007」には「sheet2008」と同じ形式の2007年度のデータが入っています。シート「sheet2008」に、そのお客様の2007年度の担当営業マンを表示させたいのです。 【例】 列A(電話番号): 011-231-1112 列B(名前):佐藤 一郎 列C(住所):北海道札幌市中央区北1-1-1 列D(担当営業マン):鈴木 新規の列(2007年度の担当営業マン):鈴木  ・「sheet2008」「sheet2007」はほぼ同じデータですが、一部のお客様は名前が変わっていたり、住所が変わっていたりします。  ・「sheet2007」にないお客様が「sheet2008」にあったり、その逆があったりして、各シートのデータ件数は一致しません。  ・名前が同じでも住所が違うデータ、電話番号が同じでも担当営業マンが違うデータは別者として扱います。  ・「顧客ID」のような“必ずユニークな情報”は存在しません。 【現在の照合方法】 (1)「sheet2008」の各列の前に空白列を挿入する。  (データの1行目はタイトル行…B1:電話番号/D1:名前/F:住所/H:担当営業マン)  (データの2行目以降はデータ)     列A(空白行):     列B(空白行): 011-231-1112     列C(空白行):     列D(名前):佐藤 一郎     列E(空白行):     列F(住所):北海道札幌市中央区北1-1-1     列G(空白行):     列H(担当営業マン):鈴木 (2)「sheet2007」を列Aの電話番号で昇順に並べ替える。 (3)「sheet2008」の電話番号が「sheet2007」にあるかを調べる。     A2:「=IF(B2=(VLOOKUP(Sheet2008!$B2,Sheet2007!$A:$D,1,0)),"○","▲")」 (4)(3)で調べた「sheet2008」の電話番号と同じ行にある名前/住所が「sheet2007」にあるかを調べる。     C2:「=IF(D2=(VLOOKUP(Sheet2008!$B2,Sheet2007!$A:$D,2,0)),"○","▲")」     E2:「=IF(F2=(VLOOKUP(Sheet2008!$B2,Sheet2007!$A:$D,3,0)),"○","▲")」 (5)電話番号/名前/住所がすべて一致するデータについて、「sheet2007」にある担当営業マンの値を列Gに表示させる。     G2:「=IF((AND(A2="○",C2="○",E2="○"))=TRUE,(VLOOKUP($B2,Sheet2007!$A:$D,4,0)),"▲") (6)"▲"やエラー値で表示される計算結果について、目視で確認する。 (終了)

その他の回答 (4)

  • 回答No.5

 質問締め切り後に失礼致します。回答No.2です。 >VBAを実行して希望の形になりました。ただ、「例外」なデータの所で異常な配列になってしまいます、それを一つ一つ手動で修正、削除するのは大変なため、コードを改善できないでしょうか。 との事でしたので、対応するVBAを組んでみました。(デバッグに時間が掛かり過ぎて御質問の締め切りに間に合いませんでした)  下記のVBAではセルに入力されている文字列が 〒XXX-XXXX か或いは XXX-XXXX の形式の番号で始まっているもののみを住所と見做して、店名と同じ行のB列のセルに移し、 「(代)」や「(代表)」等の( )付きの文字列(←括弧付きの番号以外)が文頭にある場合には、先頭の括弧で括られている部分を取り除いた上で、残りの部分が、 (0 や 0X- 0XXX 0XX-XXX- 0XX-XXXX- 0XX-XXXXX という形式の番号や 電話 或いは tel で始まっているもののみを電話番号と見做して、店名と同じ行のC列のセルに移し、 url email http:// https:// で始まっているもの(大文字や全角文字も含む)や、途中に「@」が含まれているものをURLやメールアドレスと見做して削除し、 上記の条件の何れにも当て嵌まらないものを店名と見做してそのまま残す様になっております。  尚、1つの店名に対して、住所に該当するデータが複数存在していたり、電話番号に該当するデータが複数存在していたりする様な場合には、先の方に書かれている住所や電話番号が、後に書かれているデータで上書きされて消えてしまわない様にするために、店名と同じ行のD列以降列のセルに順番に移す様にしております。  ですから、もし複数の住所や複数の電話番号が記載されている店がある場合に備えて、下記のVBAマクロで処理を行った後には、手動操作にてD列に対するオートフィルターを設定し、「(空白セル)」と記された箇所のチェックを外す事で、「D列以降にもデータが存在している行」のみを抽出し、複数ある住所や電話番号の中のどれが正しいデータなのかをチェックする様にして下さい。 Sub QNo9024455_Excelで列に入っているデータを行に展開する方法_改() Dim FirstRow As Long, NameColumn As String, _ AddressColumn As String, TellColumn As String, _ myRange As Range, c As Range, BackupCell As Range, _ i As Long, tmp, cnt As Long, myIndex As Byte NameColumn = "A" '名前等の元データが入力されている列の列番号 AddressColumn = "B" '住所を入力する列の列番号 TellColumn = "C" '電話番号を入力する列の列番号 FirstRow = 3 '実際のデータが入力されている最初の行の行番号 Set myRange = Range(Range(NameColumn & FirstRow), _ Range(NameColumn & Rows.Count).End(xlUp)) If myRange.Row < FirstRow Then Exit Sub With Application .ScreenUpdating = False .Calculation = xlCalculationManual End With cnt = -1 For Each c In myRange cnt = cnt + 1 myIndex = 0 With c If .Value <> "" And (Not IsError(c)) Then tmp = Trim(StrConv(.Value, vbLowerCase + vbNarrow)) If tmp Like "(*?)*" And (Not tmp Like "(0*)*") Then _ tmp = Mid(tmp, InStr(tmp, ")") + 1) If (tmp Like "〒###-####*?" Or tmp Like "###-####*?") And _ Not (tmp Like "###-####-*?" Or tmp Like "###-#####*?") Then myIndex = 1 'tmp Like "*00090000*?[都,道,府,県]*" Then myIndex = 1 ElseIf .NumberFormatLocal = "[<=99999999]####-####;(00) ####-####" _ And WorksheetFunction.Sum(c) > 9999 Then myIndex = 1 ElseIf tmp Like "(0*" Or tmp Like "0#-#*" Or tmp Like "0###*" _ Or tmp Like "0##-###-*" Or tmp Like "0##-####-*" Or tmp Like "0##-#####*" _ Or tmp Like "電話*" Or tmp Like "tel*" _ Or (.NumberFormatLocal = "[<=999]000;[<=9999]000-00;000-0000" _ And WorksheetFunction.Sum(c) > 999) Then myIndex = 2 End If If tmp Like "url*" Or tmp Like "email*" Or tmp Like "http://*" _ Or tmp Like "https://*" Or tmp Like "*@*" Then myIndex = 255 If myIndex = 0 Then cnt = 0 Set BackupCell = Cells(.Row, WorksheetFunction. _ Max(Columns(AddressColumn).Column, Columns(TellColumn).Column) + 1) End If Select Case myIndex Case 0 cnt = 0 Case 1 If Range(AddressColumn & .Row - cnt).Value = "" Then Range(AddressColumn & .Row - cnt).Value = .Value Else myIndex = 3 End If Case 2 If Range(TellColumn & .Row - cnt).Value = "" Then Range(TellColumn & .Row - cnt).Value = .Value Else myIndex = 3 End If End Select If myIndex = 3 Then If BackupCell.Value <> "" Then Set BackupCell = _ Cells(.Row - cnt, Columns.Count).End(xlToLeft).Offset(, 1) BackupCell.Value = .Value End If If myIndex > 0 Then .ClearContents End If End With Next c On Error Resume Next myRange.SpecialCells(xlCellTypeBlanks).EntireRow.Delete On Error GoTo 0 With Application .Calculation = xlCalculationAutomatic .ScreenUpdating = True End With End Sub

共感・感謝の気持ちを伝えよう!

  • 回答No.4
  • MackyNo1
  • ベストアンサー率53% (1521/2850)

>ただ、2行2列のケースでは、真ん中を一つ飛ばして横に展開したいのですが、方法あるでしょうか。 2行ごとのデータは、すでに回答したようにTRANSPOSE関数を入力しCtrlキーとShiftキーを押しながらEnteし2行2列分を選択し、下方向にオートフィルして、そのままコピーから値貼り付けしたデータのB列をC列に移動(B列のデータ範囲を選択して周囲をC列にドラッグ)すればよいことになります。 >No2ご回答の方に補足していますように、URLやEmailという例外で追加されているものが多く、中々オートフィルでも手間なことがわかり、マクロで対応します。 どちらかというと、例外が多いようなデータでは、マクロ処理のほうが、元に戻す操作ができないので、かえって面倒なことになるような気がします。 >例外条件は以下のとおりです。 ・ある店にはホームページのURL欄とメールアドレス欄があります。ホームページは"URL http://***"、メアドは、"EMAIL ****"で始まる内容です。これらは横展開に反映する必要がありません。 わざわざ複雑な処理をするのではなく、例外条件のデータは関数やマクロ処理をする前に、不必要なデータは削除する(ワイルドカード検索)または別処理をするのが基本てす。 >・ある店名は2行にわたっています。 例えば、  長谷川商店  (雑貨・金物)  〒XXX-xxxx ○○県・・・ このような、店名と住所の間の(雑貨・金物)は不要で横展開に反映する必要がありません。 このようなセルも以下のような操作で事前にデータを成型しておきます。 Ctrl+Hで置換ダイアログを出して「オプション」をクリックし、「セル内の内容が完全に同一なものだけを検索する」のチェックを入れ、検索する文字列に「(*)」と入力して「すべて置換」します。 カッコで挟まれた文字列を削除して上に詰めて表示したい場合は、同条件の「検索」ダイアログで「すべて検索」をクリックし、Ctrl+Aですべての該当データを選択して、右クリックから「削除」で「上方向にシフト」します。 一般的なデータ処理の方法ですが、このようなデータ形式の異なるデータがどうしてA列に1行にまとめられているのでしょうか。 通常はデータ形式が異なるデータがある場合は、まとめて処理するのではなく、そのデータごとに関数やマクロ処理でデータベースに取り込むような操作をするのが、確実で最も合理的な操作方法だと思います。

共感・感謝の気持ちを伝えよう!

  • 回答No.3
  • bunjii
  • ベストアンサー率43% (3570/8198)

>店名+電話番号、店名+住所+電話番号 のパターンはある程度かたまっているため、Sheet上で範囲を手動で選択して、行への展開を実行したいと思っています。 A列のデータが最大3行のセットであり、住所の場合は先頭に"〒"があること、電話番号については先頭が"0"である場合に限りますがExcel 2013で検証した結果、次のような数式でデータの展開を行えることが分かりました。 下記の数式はExcel 2010でも再現できるはずです。 店名=OFFSET($A1,0,0) 住所=IFERROR(VLOOKUP("〒*",OFFSET($A1,0,0,3),1,FALSE),"") 電話番号=IFERROR(VLOOKUP("0*",OFFSET($A1,0,0,3),1,FALSE),"") A列が2行セットのとき展開先のセルを3列×2行を選び、オートフィルコピーで下へ必要個所までドラッグします。 A列が3行セットのとき展開先のセルを3列×3行を選択してオートフィルコピーで下へ必要個所までドラッグします。 すべてのデータが展開できたら展開先の3列すべてを選択し、コピーでクリップボードへ記憶させ、同じ位置へ値のみ貼り付ければ完了です。

共感・感謝の気持ちを伝えよう!

  • 回答No.2

 セルに入力されているデータが店名なのか、住所なのか、電話番号なのかをExcelに自動判定させるためには、何らかの基準が必要となります。  ですから前提条件として、セルに入力されている文字列が住所の場合は必ず「0~9の数字か、或いは"("」で始まっていて、住所の場合は必ず「〒」で始まっていて、店名の場合は最初の文字が「数字や〒、"("」等になっている事は無いものとします。  それから質問者様が添付された画像の例では、「店名」や「住所」、「電話番号」等といった項目名が入力されている行は何行目であるのかという事や、実際のデータは何行目から始まっているのかという事に関する情報が御座いませんので、取り敢えず仮の話として、実際のデータは3行目以下に入力されているものとします。  もし上記の前提条件が必ず成り立っている場合には、次の様なVBAを使われると良いと思います。 Sub QNo9024455_Excelで列に入っているデータを行に展開する方法() Dim myTemp, c As Range, i As Long, myRange As Range, _ FirstRow As Long, NameColumn As String, _ AddressColumn As String, TellColumn As String NameColumn = "A" '名前等の元データが入力されている列の列番号 AddressColumn = "B" '住所を入力する列の列番号 TellColumn = "C" '電話番号を入力する列の列番号 FirstRow = 3 '実際のデータが入力されている最初の行の行番号 Set myRange = Range(Range(NameColumn & FirstRow), _ Range(NameColumn & Rows.Count).End(xlUp)) If myRange.Row < FirstRow Then Exit Sub With Application .ScreenUpdating = False .Calculation = xlCalculationManual End With i = 0 For Each c In myRange i = i + 1 With c If .Value <> "" And Not IsError(c) Then Select Case InStr("0123456789(〒" & .Value, _ Left(Trim(StrConv(.Value, vbNarrow)), 1)) Case Is < 12 If Range(TellColumn & .Row - i).Value = "" Then Range(TellColumn & .Row - i).Value = .Value Else Cells(.Row - i, Columns.Count).End(xlToLeft). _ Offset(, 1).Value = .Value End If .ClearContents Case 12 If Range(AddressColumn & .Row - i).Value = "" Then Range(AddressColumn & .Row - i).Value = .Value Else Cells(.Row - i, Columns.Count).End(xlToLeft). _ Offset(, 1).Value = .Value End If .ClearContents Case Is > 12 i = 0 End Select End If End With Next c On Error Resume Next myRange.SpecialCells(xlCellTypeBlanks).EntireRow.Delete On Error GoTo 0 With Application .Calculation = xlCalculationAutomatic .ScreenUpdating = True End With End Sub

共感・感謝の気持ちを伝えよう!

質問者からの補足

ありがとうございます。 VBAを実行して希望の形になりました。ただ、「例外」なデータの所で異常な配列になってしまいます、それを一つ一つ手動で修正、削除するのは大変なため、コードを改善できないでしょうか。(電話番号に(代)で始まるものがあり、これは既に対応できており助かりました) 例外条件は以下のとおりです。 ・ある店にはホームページのURL欄とメールアドレス欄があります。ホームページは"URL http://***"、メアドは、"EMAIL ****"で始まる内容です。これらは横展開に反映する必要がありません。 ・ある店名は2行にわたっています。 例えば、  長谷川商店  (雑貨・金物)  〒XXX-xxxx ○○県・・・ このような、店名と住所の間の(雑貨・金物)は不要で横展開に反映する必要がありません。現状では、2行目のこれが店名になってしまいます。 よろしくお願いいたします。

関連するQ&A

  • EXCEL データをレコード化するには

    Excelのデータについて教えてください 1枚目のシートに 管理番号:氏名:住所:電話番号の4つのデータがそれぞれ別のセルに入ってるデータが100件あります。 (Aの列:管理番号 Bの列:名前 Cの列:氏名 Dの列:電話番号) これを、2枚目のシートで利用したいのですが、 Aの列の管理番号を入力したら、その列のデータが表示されるように したいです。Wordの差込のような感じです。 =(Sheet1!$B3)これだと、1つのデータしか出ませんよね。 すべてのデータの送り状を作成したいと思っています。 VBAとかでないとできないのでしょうか。 よろしくお願いいたします。

  • 二つのエクセルデータを照合する方法。

    2つのエクセルを照合する方法を教えてください。 エクセル1には A列に電話番号が100件入っています。 エクセル2にはA列に電話番号が100件B列に住所が100件 入っています。 電話番号の内容は一緒ですが、エクセル1と2では並び方が違います。 やりたい事はエクセル1に電話番号に対応した住所情報をエクセル2から検索して入力する事です。 この作業を関数を使っていっきにする方法はありませんか? 実際は1000件くらいのデータなのですが、やり方が分からず目視でやっているので気が狂いそうです。 ※昨日似たような質問をしましたが、質問の仕方があいまいだったので出しなおしました。 明日作業がまっているので夜のうちに質問します。 ちなみにエクセル2010です。

  • 2つのシート間での重複データのチェック

    Excelについて教えてください。 以下の2つのシートがあります。 Sheet1 すずき 03-0000-0000 やまだ 03-1111-1111 たなか 03-2222-2222 Sheet2 03-1111-1111 03-4444-4444 03-0000-0000 03-2222-2222 Sheet1には名称と電話番号、Sheet2には別所から抽出した電話番号のみのデータがあります。 Sheet1のデータの中からSheet2に電話番号があるものだけを知りたいのですが、たとえばSheet1の 各行のC列 に Sheet2に一致する番号があった場合は●等付けるにはどうすればよいでしょうか。 よろしくお願いします

  • Excelで、データの紐付けを自動的にやりたい

    携帯電話の請求額が今月だけ高かったので通話明細書を調べてみると、確かに通話時間の合計が多いのはわかりました。しかし、明細書には電話番号だけが表示され、どこにかけたの情報がありません。 Excel2003で通話明細書のシートを作成し、少し離れた別の列に、携帯電話から取り込んだ電話帳データ(電話番号と通話先が対になっている)を貼りつけました。これで、通話明細書の電話番号に対応する通話先は、同じシートの別の列に存在するという状態ができました。 私の力量でできるのは、オートフォーマットを使い、調べたい電話番号をスクロールさせて該当する通話先を突き止め、通話明細書の電話番号のとなりの列に貼り付ける作業を繰り返し手動で行う、というものです。通話時間の長いベスト10だけでも明らかにしようと思ったのですが、1件だけ突出したものがあっただけで、あとは通話時間2分~5分のものが延々と連なっています。およそ全部で800件ほどあります。やはり、通話時間の分析よりも、「どこに多くかけているか」を明らかにしたいのです。

  • 「エクセル」で、「アクセス」のようにデータを呼び出したい

    「Excel2000」を使用しています。 少し、ややこしいのですが… たとえば住所録で、 「sheet1」の 1行目にリストのタイトルが入っていて、 A2、A3…に通し番号、 B2、B3…に名前、 C2、C3…に住所、 D2、D3…に電話番号 が入っているとします。 その時、「sheet2」の (たとえば)A2に 「sheet1のA2」に入っている通し番号を入力すれば、 その行に入力されている名前や住所や電話番号が、 任意のセル(たとえばD10、C8、C9)に表示される… といったことは可能でしょうか? こういったことは「Access」が 得意なんだと思いますが、なんとか エクセルで出来ないものでしょうか? マクロなどを使うのでしょうか? マクロはほとんど触ったことがないのですが、 チャレンジしてみますので お教え願えませんでしょうか。

  • エクセルデータにて、列順変更のマクロを作成中です。

    エクセルデータにて、列順変更のマクロを作成中です。 項目名を検索しならびを変えていますが、項目名が突然「郵便番号」⇒「〒」、「〒番号」など に変更されてしまいます。その場合に、MsgBoxをInputBoxにし今回は「郵便番号」がないので 代わりに「〒」を代入する方法をとりたいのですが、どのようにマクロを書いたらよいですか。 よろしくお願いいたします。 【処理内容】 A列、B列、C列、D列 電話番号、名前、住所、郵便番号    ↓へ列のならびを変更 A列、B列、C列、D列 名前、郵便番号、住所、電話番号 【マクロ】 Sub 列順変更() Dim fld As Variant Dim rng As Range Dim c As Integer Sheets("Sheet2").Cells.Clear c = 1 For Each fld In Array("名前", "郵便番号", "住所", "電話番号") Set rng = Rows(1).Find(fld, LookAt:=xlWhole) If rng Is Nothing Then MsgBox fld & " がありません" Exit Sub Else rng.EntireColumn.Cut Sheets("Sheet2").Cells(1, c) c = c + 1 End If Next MsgBox "処理が完了しました。" & vbCrLf & "Sheet1に残ったデータを再確認してください。" End Sub

  • Excelで特定の行だけ別シートに抽出する方法

    sheet1に下記のリストを作ります。 番号  名前    郵便番号     住所    電話番号     会社名  部署 1    高橋    〒111-1111   東京都   00-0000-0000  ○×    人事 2    田中    〒222-2222   神奈川県  111-11-1111   △□   営業 3    佐藤    〒333-3333   埼玉県    22-2222-2222  ・・・・   ・・・・ sheet2のA1に番号を入力すると「1」とした場合   名前    郵便番号    住所     部署   高橋    〒111-11111  東京都   人事 というように該当の列の特定の列だけを表示させる方法はありますでしょうか? 自動で抽出したいのですが、なにとぞよろしくおねい致します。

  • エクセルVBAで複数の条件を満たす検索方法

    エクセルのVBAを使ってデータ検索を行うプログラムを作っています "Sheet2"は下記のように、A列に生年月日、B列に住所、C列に電話番号、D列にメールアドレスが入力されています        【Sheet2】   生年月日  住所    電話番号  メールアドレス     A      B       C        D 1 1999/9/10 東京都○○ 11-111-1111 aa@goo.co.jp 2 2003/2/26 大阪府○○ 22-222-2222 bb@goo.co.jp 3 1985/6/22 福岡県○○ 33-333-3333 cc@goo.co.jp 4 1995/4/11 愛知県○○ 44-444-4444 dd@goo.co.jp "Sheet1"のA1に生年月日、A2に住所、A3に電話番号を入力し、"Sheet2"のデータと照合して、3つの値が合致した行のD列のメールアドレスを"Sheet1"のB1に返したいと思います 上記の表だと、"Sheet1"のA1に1985/6/22、A2に福岡県○○、A3に33-333-3333と入力されている場合、B1にcc@goo.co.jpの値を返すようにしたいのです。 findを使って生年月日、住所、電話番号を検索し、行番号を取得して、3つの行番号が同じならその行番号のD列の値を返すというような方法で考えていたのですが、エラーが回避できずに困っています。 生年月日が同じ人がいたり、夫婦や親子などは住所と電話番号が同じといった場合があり、上手く検索できません。  エラー回避の方法、もしくは他のやり方でも構いませんので どなたかご教授願えないでしょうか? よろしくお願いします。

  • Excelのデータを書き換えるには

    Excelのデータを書き換えるには、たとえば、縦C列の文字で(空港)だけのデーターを残したいのですが、同時に横の2.5.8.9........................番のABのデーターも一緒に残せるのでしょうか。うまく説明出来ませんが、2A(住所)2B(電話番号)2C(空港) 5A(住所)5B(電話番号)5C(空港) 1A(住所)1B(電話番号)1C(スタジアム)3A(住所)3B(電話番号)3C(ジャイアンツ) 縦C列に(空港)がある横2.5.8.9......のデーターだけ残したいのです。宜しくお願いします。

  • WebページのリストをExcelに落とす方法

    Webページに掲載されている大量の店名、住所、電話番号のリストをExcelに落とす(店名、住所、電話番号の列に入れる)のに便利な方法を教えてください。 リストは複数のページにわたっており、1ページ当たり20件程度の項目があるとします。 ページのソース(テキスト)から必要なタグの項目を抽出していけばよさそうですが、プログラムを組まなければだめでしょうか(当方プログラム作成はできません)。