• ベストアンサー

Excelで表に入力されたデータを1列に並び替え

第1行に47都道府県名、列Aに1980ー1999年の入った表があります つまり、B2は北海道の1980年のデータ、AV21は沖縄の1999年のデータが入ります この表を以下のように1列に変換するにはどうすればよいでしょうか INDEX関数などで試そうとしましたができませんでした 列A 列B 列C 北海道 1990 元B2のデータ 北海道 1991 元B3のデータ (中略) 沖縄 1998 元AV20のデータ 沖縄 1999 元AV21のデータ

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

  • ベストアンサー
  • e10go
  • ベストアンサー率38% (47/122)
回答No.1

こんばんわ。 INDIRECT関数を使用して、R1C1形式のセル指定で、変換データを表示する計算式を考えました。 元データがシート"Sheet1"にあるとして、変換データを別シートに表示する計算式を下に示します。 なお、変換データは、セルA2~C941に入れるものとします。 A列(A2~A941)の式 =INDIRECT("Sheet1!R1C["&INT((ROW()-2)/20)+1&"]",FALSE) B列(B2~B941)の式 =INDIRECT("Sheet1!R["&INT((ROW()-2)/20)*(-20)&"]C1",FALSE) C列(C2~C941)の式 =INDIRECT("Sheet1!R["&INT((ROW()-2)/20)*(-20)&"]C["&INT((ROW()-2)/20)-1&"]",FALSE)

surumeika
質問者

お礼

ありがとうございました

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

質問の例がわかりにくいが、Index関数でできます。 Sheet2の、第1行は A1=空白、B1=北海道、C1=青森、D1=秋田、E1=岩手、・・・AV1=沖縄ですね。 A2=1980、A3=1981,A4=1982、・・・・・A21=1999ですね。 B2:AV21までに計数が入っている。 北海道 青森 岩手 右は省略 1980 1 21 41 1981 2 22 42 1982 3 23 43 1983 4 24 44 1984 5 25 45 1985 6 26 46 1986 7 27 47 1987 8 28 48 1988 9 29 49 1989 10 30 50 1990 11 31 51 1991 12 32 52 1992 13 33 53 1993 14 34 54 1994 15 35 55 1995 16 36 56 1996 17 37 57 1997 18 38 58 1998 19 39 59 1999 20 40 60 計数は、結果が正しいか、わかりやすくするためわざと連番にしている。 ーーーーーー 府県をA列に20行ずつ並べるやり方。 Sheet3に A2に =INDEX(Sheet2!$B$1:$AV$2,1,INT((ROW()-2)/20)+1) と入れて20*47+1行まで式を複写する。 計数部分について Sheet3の B2に =INDEX(Sheet2!$B$2:$AV$21,MOD((ROW()-2),20)+1,INT((ROW()-2)/20)+1) と入れて、20*47+1行まで式を複写する。 結果 北海道 1 北海道 2 北海道 3 北海道 4 北海道 5 北海道 6 北海道 7 北海道 8 北海道 9 北海道 10 北海道 11 北海道 12 北海道 13 北海道 14 北海道 15 北海道 16 北海道 17 北海道 18 北海道 19 北海道 20 青森 21 青森 22 青森 23 青森 24 青森 25 青森 26

surumeika
質問者

お礼

ありがとうございました

関連するQ&A

  • Excelで1列のデータを5列に振り分けする

    Excel2003でA列に1行にあるデータ(半角英数字)を 次のシートに、1行ずつコピーして、それを5列に振り分けするというマクロを作りたいです。 (ただし、コピーは2つずつの時もあります。) 元データ ●A列 B列 C列  1  2  3  4  5  ・  ・ 加工後 ●A列 B列 C列 D列 E列   1   1   2   2   3   3   4   4   5   5   上記のような感じです。ただデータは数字のみでなくて、英数字です。 Excelのマクロは全くの初心者で大変困っています。 どうぞよろしくお願いたします。

  • エクセルで、異なる列のデータを、ひとつの列に、ある一定の規則でまとめる方法、を、教えて下さい。

    質問させて頂きます。 A1      A2      A3      ~      A30      B1 B2 B3 ~ B30 C1 C2 C3 ~ C30 A、B、C列に、異なるデータ(関数)が30行まで入っています。 これらのデータをひとつの列にまとめたいのですが、 A1 B1 C1 A2 B2 C2 A3 B3 C3 ~ A30 B30 C30 上記のように、ABCの1行目、ABCの2行目、といった感じに 並び替える方法をご存知でしょうか? ちなみに、それぞれの列に入っているデータは「CONCATENATE関数」です。 「値」ではなく、あくまでも「関数」のまま並び替えたいと思います。 宜しくお願い致します。

  • ★エクセル関数に詳しい方、よろしくお願いします

    ★エクセル関数に詳しい方、よろしくお願いします はじめまして質問を利用させていただきます。 エクセル関数に詳しい方、どうか教えてください。 いつもこの質問コーナーをヒントに↓の関数を作成して、シート1の★c列に 値を抽出することができました。 <シート1>の★c列に関数を入れて、a列、b列の一致したデータを<シート2>から抽出 =INDEX(シート1!c$2:c$10,MATCH(2,MMULT((シート2$a2:F$a10=a2:b2)*1,{1;1}),))    <シート1>           <シート2 データ> a列  b列   ★c列      a列  b列    c列 101  キウイ  北海道    101  キウイ  北海道 201  キウイ  沖縄県    101  ばなな  北海道 101  ばなな  北海道    101  オレンジ 北海道 201  ばなな  沖縄県    101  いちご   北海道 101  オレンジ 北海道    101  メロン   北海道 201  オレンジ 沖縄県    201  キウイ   沖縄県 101  いちご  北海道     201  ばなな  沖縄県 201  いちご   沖縄県    201  オレンジ 沖縄県 101  メロン   北海道     201  いちご  沖縄県 201  メロン   沖縄県     201  メロン   沖縄県 **********************************************  この下からが質問内容になりますm(_ _)m ********************************************** しかし、表が少し複雑になってしまい、 上で作成した関数が使えなくなってしましました。 ●<シート2>のb列の文字が複雑になってしまった場合、 <シート1>の★c列に、うまくデータを抽出することはできますでしょうか? <シート1>          <シート2 データ> a列  b列   ★c列    a列   b列     c列 101  キウイ  #N/A    101  甘いキウイ 北海道 201  キウイ  #N/A    101  甘いばなな 北海道 101  ばなな  #N/A    101  オレンジ   北海道 201  ばなな  #N/A    101  いちご小   北海道 101  オレンジ #N/A    101  メロン小   北海道 201  オレンジ #N/A    201  黄色キウイ 沖縄県 101  いちご   #N/A    201  ばなな小  沖縄県 201  いちご   #N/A    201  オレンジ大 沖縄県 101  メロン   #N/A    201  いちご大  沖縄県 201  メロン   #N/A    201  メロン大   沖縄県 もし、ご存知の方がいらっしゃいましたら、どうかご教示願います。 どうかよろしくお願いいたします。

  • エクセルでばらばらのデータを一つにまとめたい。

    以下のような表を作成したいのです。 【作成したい表】     A     B    C 1  商品名  値段   店舗名  2  みかん   30    A店 3  りんご   120    B店 4  ばなな   150    C店 5  らっきょ   200   D店 今、欲しいデータが違うファイルにあります。 【データがある表】     A     B     1  商品名  入荷   2  みかん   30    3  オレンジ  100   4  いちご    300   5  らっきょ   200   現段階で、【作成したい表】のB列の値段は空白です。 【作成したい表】のAの列と【データがある表】のA列の文字列を検索し、 データが一致した場合、 【作成したい表】のB列値段の該当する行に【データがある表】のB列値段へ書き込みたいのです。 A列商品名は【作成したい表】と【データがある表】では並び順も違いますし、 商品名がないものもあります。 たとえば、みかんを例にとると、 【データがある表】A:2に「みかん」があります。 【データがある表】B:2に「30」とありますので、 【作成したい表】B:2に「30」と書き込む。 こんな感じです。 エクセル初心者なのですが、急きょ仕事で大量データの移し替え を頼まれました。 おそらくVLOOKUP関数やIF関数を使用するのだと思いますが うまくいきません。 よろしくお願いします。

  • Excel 関数を使う? 抽出データ

     以下について教えてください。 ============================== 【基になる表--「A」の表と呼ぶことにします。】  列方向のリストには左から「月」「日」「地域」「数」が並んでいる。  「月」には1月から12月までのデータが、 「日」には1日から30もしくは31日のデータが、 「地域」には北海道、青森、新潟、東京、大阪の5つの地域が、 「数」には売上数が並んでいるとする。 【基になる表から抽出して作られた表--これから便宜上「B」の表と呼ぶことにします。】  列には「地域」の中から北海道と青森を、 行には「月」から9月を、「日」から15日を、 列と行が交差するセルには「数」を置き、「9月15日の北海道と青森の売上数」の合計を抽出したい。  さらに、Bの表において、 「地域名」の北海道を削除して新潟にしたり、9月15日ではなく9月18日に置き換えても、 列と行が交差するセルに自動的に集計結果が表されるようにしたいのです。  ちなみに、Aの表もBの表も同じブックに作り、シートは別にします。 ===================================  DSumやIfSum関数だと私が作りたいBの表のような形式になりません。列方向にしかラベルを置けません。  ピボットテーブルを使った集計ならば、求めているデータ以外のデータも表示されてしまいます。  どうすれば求めていることができるでしょうか?どうか皆さんの知恵をお貸しください。

  • エクセルで一覧表を「縦横」に調べて該当する値を取り出す方法について

    Excel2002を使用しています。 下記のような表を作成し、「MATCH関数」と「INDEX関数」を使用して、該当の値(仮にα値:5.3、距離700とします)を取り出そうとしているのですが、エラーになってしまいます。 A B C D 1 3.4 3.5 3.6  2 700 30.0 30.4 30.7 3 750 31.1 31.6 31.9     4 800 32.3 32.8 33.2 5 6 α値 5.3     7 距離 700   この表から、行番号、列番号を出すために、以下の関数式を使っています。     行番号:=MATCH(B6,B1:D1)     列番号:=MATCH(B7,A2:A4)  最後に、「INDEX関数」で該当の値を取り出したいのですが、この「INDEX関数」の結果が「#REF!」になってしまいます。関数式は   =INDEX(B2:D4,D6,D7) ちなみに、D6には、行番号の関数式が、D7には、列番号の関数式が入っています。 このエラーを解消したいのですが、どなたか知恵を貸していただけませんでしょうか。よろしくお願いします。

  • 【エクセル】特定の文字列(番号)の行だけ抽出したい

    現在資料を作っていて、またもや困ったことがあったので教えてください。 特定の文字が含まれる行のデータを抽出するにはどうしたらいいのでしょうか。 具体的にいうと ____|A|B|C|D|E| [01]|F|1|0|3|5| [02]|G|0|2|5|7| [03]|H|0|3|4|8|    中略 [21]|F|0|0|9|6| [22]|G|6|4|5|1| [23]|H|3|3|2|2|    中略 [31]|F|2|2|4|6| [32]|G|5|3|7|9| [33]|H|8|2|6|4|    以下略 *[]の中身は行番号 一番上段のA B C D Eは列の軸 |はセルの区切りを示している のような表でGのBのところ(行番号が10n+2のところのA列)だけのデータを合計したいのです。 つまり上の表でいえば =A2+A22+A32+A42+A52…(=0+6+5+…)ということをしたいのですが 数が600行近くあるので手入力だとかなり面倒くさいのです。 SUM関数を使うのかなとも思いましたが、それでもセルの指定の面倒くささは変わらないし… 何か簡単にできるようにする方法がありましたらご教授お願いします。

  • エクセル 複数行にまたがっているデーターを一つの行にまとめたい

          A列  B列   C列 1行目  佐藤 北海道 りんご 2行目  佐藤 北海道 ばなな   3行目 伊藤  東京  いちご 4行目  伊藤  東京  ばなな  上記のようなデーターがあります。これを2行目と4行目を削除し下記のようにしたいのですが       A列  B列      C列 1行目  佐藤 北海道  りんごばなな 2行目  伊藤  東京   いちごばなな A列とB列のデーターが同じでC列のデータが異なる場合、上記のように一行にまとめたいのです。関数やVBAで上記の処理を出来る方法がありますでしょうか。 

  • エクセルの同じ行の違う列を返す関数

    エクセルの同じ行の違う列を返す関数 エクセルの関数について質問があります。 例えば、以下のようなデータがあったとして、 左からA列、B列、上から1行、2行・・・5行目に 0.1  32 0.2  9 0.3  15 0.4  2 0.5  21 といったデータがあるときに、例えば MIN(B1:B5)はB4の5とわかった場合に、 この時のA4の数値を知りたいのです。 データが膨大だとその数値をさがすだけで大変です。 よろしくお願いします。

  • エクセルで2列に入力された同一データを全て抽出したい

    下の表でA列とB列に入力された「バナナ」を全て、すなわち1,2,3,5行目を抽出をしたいのです。 データ量が1000行を越すため、効率よく抽出する 方法を教えてください。     A    B 1 バナナ  みかん 2 りんご  バナナ 3 バナナ  バナナ 4 いちご  みかん 5 バナナ  いちご

専門家に質問してみよう