• ベストアンサー

一部データの一致するセルを並べ替える

エクセル2000での質問です。以下の文字データが一列上に並んでいます。 あか☆あいうえお あか☆かきくけこ あさを☆さしすせそ あさを☆たちつてと あさを☆なにぬねの これを あか☆あいうえお,かきくけこ あさを☆さしすせそ,たちつてと,なにぬねの のように「☆以前が一致する」セルを行単位でまとめて行きます。 ※2列目以降の「***☆」はできれば排除したいです。 データ数は約1200行です。文字データ内の文字数は不定です。 よろしくお願い致します。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

VBAでやってみます。 データがA1から下に途切れなく入っているものとします。 これをD1から下に「☆以前が一致する」セルを行単位でまとめて行くはずです。 標準モジュールに以下をコピペして実行してください。 Sub test01() Range("A1").Activate i = 1 Do Until ActiveCell.Value = "" If Cells(i, "D") = "" Then Cells(i, "D") = ActiveCell.Value End If If Left(ActiveCell.Value, InStr(ActiveCell.Value, "☆")) _ = Left(ActiveCell.Offset(1).Value, InStr(ActiveCell.Offset(1).Value, "☆")) Then Cells(i, "D") = Cells(i, "D") & "、" & Mid(ActiveCell.Offset(1).Value, InStr(ActiveCell.Offset(1).Value, "☆") + 1) Else i = i + 1 End If ActiveCell.Offset(1).Activate Loop End Sub

poolplayer
質問者

お礼

素晴らしいの一言です。 大変上手くいきました。 ありがとうございました。

その他の回答 (4)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.5

条件 A列にデータが空白行が無く連続していること ☆で区切ってあること Sub Macro() Dim a As Range Dim b As Variant Dim i As Integer, ii As Integer [a1].Sort Key1:=Range("A1") For i = 1 To [a65336].End(xlUp).Row If InStr(Cells(i, 1), b) = 0 Or b = Empty Then Set a = Cells(i, 1) b = Left(a.Value, InStr(a.Value, "☆")) ii = 1 Else a.Offset(0, ii) = Right(Cells(i, 1), Len(Cells(i, 1)) - Len(b)) Cells(i, 1) = "" ii = ii + 1 End If Next i For i = [a65336].End(xlUp).Row To 2 Step -1 If Cells(i, 1) = "" Then Rows(Cells(i, 1).Row).Delete Next i End Sub 以上

poolplayer
質問者

お礼

2さんのやり方でやって見ました。 ありがとうございました。

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

質問の意味がわかりにくい。というか余りないタイプの質問だからだろうが。 言葉で言言い換えるならば、 先頭から☆印の手前までの文字列が等しい行は、後半をまとめて1行に組み変えるのかな。 こういう課題はVBAを使わないと難しい(式が複雑化するとか作業列が必要になる)。 難しさの原因は、何行(同じ☆印の手前までの文字列が等しい行が)あるか決まっていないからです。 ーーー 例データ  A-D列 ただしB-Dは関数式の結果です。 事情があって、元データは第2行目からにする。B1には=B2を入れておく。 A-D列 あか☆あいうえお あか あいうえお あか☆あいうえお あか☆かきくけこ あか かきくけこ あか☆あいうえおかきくけこ あさを☆さしすせそ あさを さしすせそ あさを☆さしすせそ あさを☆たちつてと あさを たちつてと あさを☆さしすせそたちつてと あさを☆なにぬねの あさを なにぬねの あさを☆さしすせそたちつてとなにぬねの B2の式 =LEFT(A2,FIND("☆",A2)-1) 式を下方向に複写 C2の式 =RIGHT(A2,LEN(A2)-FIND("☆",A2)) 式を下方向に複写 B、C列で☆の左右の文字列を分離したことになる。 ーー D2の式 =IF(COUNTIF($B$2:B2,B2)>1,D1&C2,A2) 式を下方向に複写 ーー 以上で☆印までが同じも行の最下行に望みのデータが出来ている。 それだけを取り出すために、E列に E2の式 =IF(B2=B3,"",MAX($E$1:E1)+1) 式を下方向に複写 これで連続番号の出た行のD列が望む文字列である。 これを別シートに取り出す方法は Mtach関数で取り出す行番号をE列で探し、そのD列を持ってくる。 WEB(Googeなど)で「imogasi方式」で照会すれば、抜き出し問題の質問が多数出てきて、その中の2,3少数個に当たってもらえれば、後半に似たことをやっている関数例が出てくるので参照のこと。 D-E列(参考) あか☆あいうえお あか☆あいうえおかきくけこ 1 あさを☆さしすせそ あさを☆さしすせそたちつてと あさを☆さしすせそたちつてとなにぬねの 2

poolplayer
質問者

お礼

ご丁寧にありがとうございました。

  • kigoshi
  • ベストアンサー率46% (120/260)
回答No.3

文字列のデータがA1セルからA1200セルまで入っていて、A列はあらかじめソートされているという条件で。 1)B1セル =A1 2)B2セル =IF(LEFT(FIND("☆",A2))=LEFT(FIND("☆",A1)),B1&","&RIGHT(A2,LEN(A2)-LEFT(FIND("☆",A2))),A2) ※下までコピー 3)C1セル =IF(ISERR(LEFT(FIND("☆",A2))),"←",IF( LEFT(FIND("☆",A2))=LEFT(FIND("☆",A1)),"","←")) ※下までコピー 4)オートフィルターでC列が ← のものだけ表示。 でいかがでしょうか。

poolplayer
質問者

お礼

1さんの回答に加え、2さんの関数も一部利用できました。 ありがとうございました。

poolplayer
質問者

補足

3さんの関数が正しいです。 ありがとうございました。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

>あか☆あいうえお,かきくけこ >あさを☆さしすせそ,たちつてと,なにぬねの 1つのセルにこの様に並べるのかどうか、シートレイアウトを提示された方が宜しいかも。

poolplayer
質問者

お礼

ありがとうございました。

関連するQ&A

  • 書式設定(セル内の一部のみ)

    こんにちは。 1つのセル内に、 あいうえお1か きくけこ2 さしすせそ3たち つてと45.67 などと、いくつかのセル内改行を含み、文字数がばらばらのデータが入っています。 その1行目(上記の例で言うと、「あいうえお1か」)のみ、フォント赤色の書式設定をすることはできますでしょうか? ご回答よろしくお願いいたします。

  • 共通データのある複数のセルを1つにまとめる

    宜しくお願いします。 Excelで住所録を編集したいのですが、 画像の様に、B列の文字(市町村区)が一致する場合、 以降の住所を同じセルでまとめたいのですが、 関数でできることなのでしょうか? 画像の上が元データになります。 下画像のAB列は、入力済みとお考えください。 C列に関数を入れ、該当データを引っ張ってきたいです。 まとめられたデータに区切り等は不要です。 お分かりの方はお力添えください。 宜しくお願いいたします。

  • あるセルの文字列(または数値)を、他のセルのデータの一部として流用した

    あるセルの文字列(または数値)を、他のセルのデータの一部として流用したい場合について。 例えば、 セルA1に 0001 セルA2に K-0001 セルA3に T-0001 セルA4に W-0001 また、 セルB1に 0035 セルB2に K-0035 セルB3に T-0035 セルB4に W-0035 …C、D、E、、、と100項目ほど続く、という場合。 このようにデータを入力していきたい場合、 例えば、A列で、 A1の0001という数字を、A2~A4の中で、「データの一部として代入」したい時、 どういう風に自動化できますでしょうか? (例)K-0001 の中において、0001という数字は、データの一部として使われている。 ちょっとまとめてみますと、 1行目:●●●● 2行目:K-●●●● 3行目:T-●●●● 4行目:W-●●●● ●●●● は、同列の1行目の数値を、そのまま割り当てる というような記述ができたらなと思っているわけです。 つまり、1行目に●●●●を打ち込むだけで、その列の2行目以降について、適宜、自動的に必要な数値なり文字列が入力されるようにしたいわけです。 このようなことは、できませんでしょうか? マクロでも何でも結構です。 どなたか、お詳しい方、教えて下さい。 必ずお返事致します。

  • Excel2003、配列から、複数の条件一致する行のデータを取り出す方

    Excel2003、配列から、複数の条件一致する行のデータを取り出す方法 配列は最大で10行、10列程度ですが、このデータはリアルタイム(0.5秒間隔)で更新されますので、 分類等はできません。 A列のデータがZ1のセルのデータと一致し、かつ、B列は、特定の”文字列”と一致し、かつ、C列は数量で、0より大きい(負のデータは無いが、""はあり得る)という条件に合致した行があったら、その行のD列の値をZ2のセルに格納したい。 条件に合致する行は複数あり得るが、そのときは最初に条件が合致した行のデータが必要。 いくつかの関数を調べましたが、つまづいています。

  • 二つのセルの文字列が一致しているか確認

    エクセルで2つのセルに入力されている文字列が完全に一致しているか簡単に調べる方法がありませんか。

  • セル内で改行された文字列を1行ずつ他のセルに移す

    excelで、こんなことできますか? book1で、セル内に下のような改行した文字列があり、それを入力したら、 book2に、文字列を1行ずつ他のセルに取り出したいのですが…できますか? book1 (セルは折り返して全体を表示する) book2 (仕上げの画面) A         A あいうえお                    1 あいうえお 1 かきくけこ                    2 かきくけこ さしすせそ                    3 さしすせそ → 4 たちつてと 2 たちつてと                    5 なにぬねの なにぬねの                     6 はひふえほ 3 はひふへほ 教えていただけると助かります。(ただしマクロはよくわからないのですが…)

  • Excel VBA で 書式設定(セル内の一部のみ)

    こんにちは。教えてください。 1つのセル内に、 あいうえお1か きくけこ2 さしすせそ3たち。 つてと45.67 などと、いくつかのセル内改行を含み、文字数がばらばらのデータが入っています。 その1行目(上記の例で言うと、「あいうえお1か」)のみ、フォント赤色の書式設定を、マクロで行いたいのですが、できますでしょうか? ご回答よろしくお願いいたします。

  • エクセルで一致しないセルを選択したい

    エクセルで一致しないセルを選択したい エクセル2003を使用しています。OSはWINDOWS XPです。 エクセルのセルに045から始まる数字の文字列が5000件くらい入力されているのですが、中にたまに03とか06とかから始まる違う数字が混じっています。 その03や06で始まるセルをすべて空白にしたいのですが、検索をかけても予測もしない数字(0467とか093とか)があるので、効率的ではないため、 「045から始まらないセルを選択して削除」したいのですがctrl+Fを押しても一致するものしか抽出してくれません。 「045から始まらないセル」を検索する方法はないでしょうか? よろしくお願いいたします。

  • 重複データの削除、一致するセルのみ

    A列とB列にそれぞれデータがあり、A列内にあるデータ と一致するものがB列内にある場合、B列内のデータ(セル)を 削除する簡単な方法がありましたら教えてください。 例 A列    B列 123    778 456    358     789    456 1011    228 1213    123 B列の「123」と「456」のデータがA列と一致    ↓ A列    B列 123    778 456    358     789     1011    228 1213   B列の「123」と「456」のデータを削除 よろしくお願いします。  

  • ○番地セルと△番地セルを参照し、一致していたらIFで結果を出したい

    ○番地セルと△番地セルを参照し、一致していたらIFで結果を出したい エクセル2003です。 A列に名前、B列に学部、C列に点数があります。 7行目より、各部の合格点があります。 ●Aさんが何学部かを参照させ、一致したら、更に平均点に届いている場合は○、そうでなければ×としたいです。 IFとANDの組み合わせをしようと、式を書いたのですが、エラーが出ます。 HPでは、数値でのネストが主で、文字の場合はどうするかを検索しても出ず困っています。

専門家に質問してみよう