エクセルのデータを関数で一行にまとめたい

このQ&Aのポイント
  • エクセルで数字で区切られたデータを関数を使って一行にまとめたいです。現在は一部の処理はできているが、式として扱う方法やスマートなやり方を知りたい。
  • 現在、エクセルで数字で区切られたデータを一行にまとめるための関数を使っていますが、式として扱う方法やよりスマートなやり方を教えてほしい。
  • エクセルのデータを関数を使って一行にまとめたいです。現在は一部の処理ができているが、式として扱う方法や効率的なやり方を知りたい。
回答を見る
  • ベストアンサー

エクセルのデータを関数で一行にまとめたい

エクセルで下記のような数字で区切られたデータがあり、(文字データの行数は決まっていません。) 1 あ い う え お 2 か き く け 3 さ これを 1 あいうえお 2 かきくけ 3 さ というふうに関数で一行にしたいのです。 現在は、1~2の間の行数、2~3の間の行数をB列に関数で表示できました。画像参照 あとはA列で数字の行なら、B列の行数分文字列を連結してC列に表示させれば目的達成なのですが、そこから上手い手を思いつけずに、別の表を作って行数を検索値にVLOOKUPで 式を表示させています。(D列) 当たり前ですが文字列として表示されて式としては認識されていません。 これを式として扱える方法はありますでしょうか? それか一行として表示するもっとスマートなやり方はありますでしょうか? 一度VBAで目的は達成しているのですが私以外にメンテできる人物がいないためなるべく関数かエクセルの標準機能をつかってできないかと考えております。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

作業列を使ってもいいのですか。 添付の図の場合、データはA1:A13まで入っていますが、その隣のB列とC列を作業列に使っています。 B2に =MAX(A$1:A2) C2に =IF(ISNUMBER(A2),"",C1&A2) と入れて13行目までコピーします。 後はVlookupで目的の文字列を表示させるだけ =VLOOKUP(1,B:C,2) ……1の下の文字列の場合

hisa133_1209
質問者

お礼

添付画像が見づらい状態での迅速な回答ありがとうございます。 作業列作っても大丈夫です。 出かけていたためお礼が遅くなり失礼しました。 mt2008さんの式だと私の関数の知識でもなんとか理解できそうです。 ありがとうございます

その他の回答 (3)

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

添付画像が小さくてレイアウトなどが良くわからないのですが、A1セル以下に例示のデータが入力されていて、最大連結個数が10個までなら、以下のような配列数式を使用すれば表示することができます。 C1セルに以下の数式を入力して、CtrlキーとShiftキーを押しながらEnterして下方向にオートフィルコピーしてください。 =IF(ISNUMBER(A1),LEFT(A2&A3&A4&A5&A6&A7&A8&A9&A10&A11,MIN(ISTEXT(OFFSET(A1:A10,1,0))*1000+ROW($A$1:$A$10))-1),"") #最終的にどのようにデータをまとめたいのかわからなかったので、ひとまず上記の式はA列の数字の右側のセルに連結文字を表示するようにしていますが、例えばまとめたい表が空白行が無い方が良い場合などは、さらに数式を工夫する必要があります。 また実際のデータが、例示のようにひらがなや英文字と限定されているなら、他の対処法も考えられますので、操作の目的を含めて補足説明されるとよいと思います。

hisa133_1209
質問者

お礼

添付画像が見づらい状態での回答ありがとうございます。 皆様に詳しく説明できてない状態で申し訳ないですが、 MackyNo1さんが自分のイメージに一番近い状態です。 ただご指摘のとおり最大連結個数が10までかどうか、多分10以上はないだろうという自分の判断 で質問させていただいたので、ご回答頂いた皆様の式をアレンジして自分で考えてみようと思います。 ありがとうございました。

noname#204879
noname#204879
回答No.3

貴方の添付した図はワークシート範囲が広過ぎるために内容が見え辛い。 [No.1]のように必要最小限の範囲を添付すれば見易いでしょ!

hisa133_1209
質問者

お礼

すみません。参照の式がとても長くなってしまったため 見づらい画面のまま投稿してしまいました。 今後気をつけます。 ありがとうございます。

noname#204879
noname#204879
回答No.1

添付図参照 F1: =IF(COLUMN(A1)>MATCH(LOOKUP($C1+1,$A:$A),$A:$A,0)-MATCH($C1,$A:$A,0)-1,"",INDEX($A:$A,MATCH($C1,$A:$A,0)+COLUMN(A1))) 此れを右方へズズーッとドラッグ&ペースト D1: =F1&G1&H1&I1&J1&K1 範囲 D1:K1 を下方へズズーッとドラッグ&ペースト

hisa133_1209
質問者

お礼

添付画像が見づらい状態での迅速な回答ありがとうございます。 出かけていたためお礼が遅くなり失礼しました。 MACH,INDEXともにあまり使わない関数なので勉強になります。 早速試してみますね。

関連するQ&A

  • エクセルの関数

    エクセルの関数についてですが。 1行目には見出しがあります 2行目から100行目までデータが入っています A列は店名B列は氏名  C列には、目標の数字  D列には成績 E列に関数を入れたいのです。D列の数字が5000を超えると☆、さらにC列よりD列が大きかったら ○ (目標を達成したら○が入るということです) さらに、C列よりD列が小さい場合は、D列の数字をそのまま入る)。。。目標を達成した場合は ○ 達成していない場合は そのままの数字を入れるということです どんな関数をいれたらいいか教えてください

  • Excel検索等関数

    Excelのデータで同じ列の中に番号が重複している値を探し出しなおかつ任意の行数に出す関数はありますか? Sheet1   |Sheet2   A  B |   A  B        1 あ 10 | 1 あ  10 2 あ 11 | 2 あ  11 3 い 21 | 3 い  21 4 う 22 | 4      ←A4:b4は、「い」が2行ないので空白        | 5 う  22        | 6      ←A6:b6も、「う」2行ないので空白 このように、縦の重複したセルを検索して、指定行数内の場合は、空白となる関数式があればお教えください。

  • 2つの数字の変化を読み取るエクセル関数はありますか

    エクセルの関数についてです。2つの数字の変化を A列  B列 100    1 103    1 109    1 120    1 105    -1 102    -1 120    1 123    -1 ・    ・ ・    ・ ・    ・ となっている時に,以下の2つの条件を満たす式を作ることはできますでしょうか。 (1)B列の数字を3行ずつ見てゆく。3行目までずっと1が続き,数字が変わらなければ(-1が出なければ)3行目のA列の数値(109)を取り出す (2)数字を取り出してから次の3行目までの間でB列の数字が変わったとき(1→-1,-1→1)には,変わった行のA列の数値(105)を取り出す。次は,B7なので120,次はB8なので123…と 数字を取り出す度にリセットして,新たに3行の中から新しい数字を取り出すようにしたいのです。 やはりマクロを組まないといけないのでしょうか? 分かりにくかったら申し訳ございません…

  • Excelの関数で困っています

    お願いします。 求めたい式は A列が空白でB列も空白だったら"空白" A列又はB列のどちらかでも文字が入っていたら"入ってる" A列とB列の両方文字が入っている場合は"両方" と表示させたいと思っております。 IF関数を試みましたが、上手くいきません。 できれば全てを1行で表示できるようにしたいのですが、 無理ならば、2行又は3行になっても構いません。 関数の得意な皆様、どうぞよろしくお願い致します。

  • エクセルのIF関数について

    エクセルのIF関数について質問をさせて頂きます。 現在、下記のような条件で抽出できる式を考えているのですが、 中々思うような式が思い浮かびません。 例えば、     A列  B列  C列  D列 1行目  111 2行目  222 3行目  333 4行目  444 5行目  555 6行目  666 7行目  777 8行目  888 9行目  999 上記のようなシートがあったとして、     A列  B列  C列  D列 1行目  111       999 2行目  222       333 3行目  333   ○   123   × 4行目  444 5行目  555 6行目  666 7行目  777 8行目  888 9行目  999   ○ 上記のように、例として C列の1行目に「999」と入力した場合、A列の9行目に「999」の数字があるので、その横のB列に「○」 C列の2行目に「333」と入力した場合、A列の3行目に「333」の数字があるので、その横のB列に「○」 C列の3行目に「123」と入力した場合、どこにも該当番号がないので、入力したC列の横、即ちD列の3行目に「×」を表示 要は、A列のどこかに該当数字があった場合にはその数字の横(B列)に「○」、どこにも該当数字が無い時には、入力した数字の横、D列に「×」を表示するような数式を考えています。 IF関数を使えばできるような気がするのですが、色々と試してみても中々うまくいきません。 下手な説明で分かり辛いかもしれませんが、どなたかご存知の方がいましたら、ご教授の程頂ければ幸いです。 どうぞ宜しくお願い致します。

  • エクセル関数の詳しい方ご教示ください。

    エクセルの詳しい方、ご教示ください。 A B C D E F G(表示したい列) 1行目 2 3 5 7 9 2 =知りたい関数 2行目  4 5 8 9 1 2 上記のようなランダムな数値データがあり、 ・Aの列に表示している数字の数だけ、 ・Bから右の列に移動した数字を、 ・Gの列に表示したい と、思っています。 例で考えると、 G1のセルは7 G2のセルは2 と表示されるイメージです。 Gにはどのような関数を使えばよいでしょうか?

  • エクセル関数

    A列 B列 エクセル初心者です。B列●の右に直前の空白のセルの数を表示する □       関数はありますか。これが2000行あるので困っています。式の意味 □       も教えていただけますか。 ●  2 □ ● 1

  • エクセル縦データをズレが無く横並びに

    エクセルバージョンは、2002です。 A列に毎日処理するデータが1000行程あります。 構成としまして、基準となるデータから10行が1つのデータの構成で、途中から1行減って9行の構成に変化します。 途中から9行の構成部分から、10個目の部分に基準となる先頭部分が格納されて、構成データがズレてしまいます。 ズレるイメージ下記の通りです。 縦に並んでいるデータ(データは、文字列や数字です。) 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 このデータを各列のセル毎に格納 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 1 → ズレて10の部分に1が格納 2 3 4 5 6 7 8 9 1 2 → ズレて9と10の部分に1と2が格納 上記に組んである数式は、下記の通りです。 =INDEX($A$2:$A$1001,ROW(B2)*10+COLUMN(B2)-11) この式をB列からK列迄コピーして、必要な行数迄コピーしています。 このズレが無い様に表示させたい表示は 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 このズレが出来ない方法をご教授頂ければ幸いです。 宜しくお願い致します。

  • EXCELの関数

    EXCELで、Aの列に○、Bの列に×がある行のCの列の数字を返す関数の使い方があれば、教えて下さい。 AとCの二つの列だけだと、VLOOKUPという関数を使えばAが○の時のCの数字を返す事ができるという事までは分かりましたが、Aの列に○がある行が2つ以上ある場合(Aの列が○で、Bの列が△である行を無視したい場合)、そのまま使うことができなくて困っています。 かなり初心者なので、申し訳ありませんが、よろしくお願いします。 例 ○   △   5 ×   □   3 ○   □   4 ○   ×   1 上のような行が無数に並んでいる場合で、左の列と真ん中の列の組み合わせが1つしかない時、左の列と真ん中の列の文字を指定した時の右の列の数字を返したい。

  • エクセルと関数について

    エクセルと関数について 売店チケット 件数 料金 性別 6000 2 6000 男 6000 0 6000 女 上記のような表をエクセルで作成しました。 左からA列 売店チケット B列 件数 C列 料金 D列 性別です。 売店チケットは3000円単位で、6000円だと2件になります。 でも、手打ち入力なので、ミスすることも多く、B列の0件はエラーで、正しくは2件なのです。 そこで質問なのですが、関数で もし、A列に金額が入っていれば(ゼロ以外)、B列の0は数字上 おかしいので、エラーを表示するような数式を作りたいです. 例えば、E列の1行目に「エラーですよ」的な表示はまとめてできますか? B列は1行目から3000千行目位までデータが入っているとします。 売店チケットに金額の表示があるのに、B列が一件でもゼロだと間違いなのです。 うまく表現できていないかもしれませんが、よろしくお願いします。

専門家に質問してみよう