• ベストアンサー

文字列の検索 集計

エクセルデータにて     A      B      C 1  ABC    ○○○    XYZ 2  ABC    ○○○    PQR 3  DEF    ×××    XYZ 4  DEF    ×××    PQR 5  DEF    ×××    HIJ *アルファベット、記号は文字列 において、下記形式にしたい場合はどの様な手法がありますでしょうか?     A      B      C 1  ABC    ○○○    XYZ PQR    2  DEF    ×××    XYZ PQR HIJ その際、Cに表示させる方法は、1)連続形式、2)カンマ区切り、3)別列の追加 が考えられると思いますが、どの形式でも構いません。(理想は2ですが) 初心者質問ですが、宜しくお願いします。

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

  • ベストアンサー
noname#176215
noname#176215
回答No.1

   A    B    C       D      E 1 2 ABC ○○○ XYZ XYZ PQR     1 3 ABC ○○○ PQR PQR 4 DEF ××× XYZ XYZ PQR HIJ 1 5 DEF ××× PQR PQR HIJ 6 DEF ××× HIJ HIJ 1列挿入し データを A列昇順に並べ替え ■D2セル =IF(A2=A3,C2&" "&D3,C2) ■E2セル =IF(A1=A2,"",1) D2:E2セルを選択して フィルハンドルをダブルクリック E列にオートフィルタを設定して「1」を抽出 必要なら範囲選択してコピーし 別セルに貼り付け

その他の回答 (1)

  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.2

マクロです。試してみてください。 Sheet2へ展開されます Sub test()   Dim cCD     As String   Dim mR     As Long   Dim wR     As Long   Dim wVal(3)   As String   Dim EditR    As Long   '   With ActiveSheet     mR = Range("A" & Rows.Count).End(xlUp).Row     cCD = ""     EditR = 0     For wR = 1 To mR       If cCD <> .Cells(wR, 1) Then         If cCD <> "" Then           EditR = EditR + 1           With Worksheets("Sheet2")             .Cells(EditR, 1) = wVal(1)             .Cells(EditR, 2) = wVal(2)             .Cells(EditR, 3) = wVal(3)           End With         End If         cCD = .Cells(wR, 1)         wVal(1) = .Cells(wR, 1)         wVal(2) = .Cells(wR, 2)         wVal(3) = .Cells(wR, 3)       Else         wVal(3) = wVal(3) & "," & .Cells(wR, 3)       End If     Next     '     EditR = EditR + 1     With Worksheets("Sheet2")       .Cells(EditR, 1) = wVal(1)       .Cells(EditR, 2) = wVal(2)       .Cells(EditR, 3) = wVal(3)     End With   End With End Sub

関連するQ&A

  • エクセルで最初のスペースまでの文字列を削除したい

    エクセル2007を使っています。 例えば下記のような文字列がA列にあったとして 関数を使ってB列をこうのようにしたいのです。 【A列】 ABC DEF GH IJK LMNO PQR S TU VW X YZ 【B列】 DEF IJK PQR S VW X YZ 要するにA列の最初のスペースまでの文字列を削除したものをB列に求めたいのです。 A列には必ずスペースが入っています。 よろしくお願いします。

  • 秀丸の検索・置換の正規表現の最短一致の挙動が変です

    秀丸の検索または置換の正規表現の 最短一致での挙動ですが、 /abc/def/ghi/jkl/mno/pqr/st/uvw.xyz の先頭にカーソルを置いた状態で、 (質問1) 正規表現のチェックボックスをチェックして /.*$ で検索すると /abc/def/ghi/jkl/mno/pqr/st/uvw.xyz が検索されると思うのですが 実際には /def/ghi/jkl/mno/pqr/st/uvw.xyz が検索されてしまいます。 なぜでしょうか。 (/abc/.*$とするとカーソルがある /abc/def/ghi/jkl/mno/pqr/st/uvw.xyz ではなく次の行以降の /abc/def/ghi/jkl/mno/pqr/st/uvw.xyz が検索されてしまいます?) (質問2) 正規表現のチェックボックスをチェックして /.*?$ で検索すると最短一致となるため /uvw.xyz が検索されると思うのですが 実際には /def/ghi/jkl/mno/pqr/st/uvw.xyz が検索されてしまいます。 なぜでしょうか。 (なお、/[^/]*$では/uvw.xyzが検索されます)

  • TCHAR文字列内の検索について

    TCHAR文字列内の検索について 質問があります。 #include <tchar.h> TCHAR tex1[8]; TCHAR tex2[8]; TCHAR tex3[8]; TCHAR buf[128] = TEXT("abc,def,ghi"); TCHAR型で宣言された変数bufには、「abc,def,ghi」が格納されているとして、 結果的に tex1 → "abc" tex2 → "def" tex3 → "ghi" となるようなプログラムを作ろうと考えています。(buf内をコンマで区切って3つの変数に代入) まずコンマの位置が何文字目にあるか確認するために TCHAR ret[128]; TCHAR search[128] = TEXT(","); ret = _tcschr( buf, search); としてみましたが、やはりうまくいかずにエラーが出ます。 上記の目的を達成するにはどのようなプログラムを作ればよいのでしょうか? 環境はVisual C++ 2008 Expressで、C言語を使ってプログラミングしています。

  • cmd.exeが、文字を取りこぼす

    win10です。数年前に買いました。 バッチファイルを使っています。 例えば、そのバッチファイルに書かれているコマンドが ABC.exe def hij ABC.exe def hij ABC.exe def hij ABC.exe def hij ABC.exe def hij ABC.exe def hij ABC.exe def hij ABC.exe def hij ABC.exe def hij だとすると、最初は ABC.exe def hij と正常に実行されるのですが、しばらくすると C.exe def hij などと、最初が欠けます。当然エラーです。 もちろん、実際には引数のdefとかは各行で違います。ABC.exeは架空のコマンドですが共通です。 セキュリティ関係か...と思って cmd.exe を対象から外そうとしたのですが、その場所が分からず。 試しにバッチファイルをクリップボードにコピーして、コンソール画面に張り付けると問題ありません。 なお、そのコマンドはWin10に最初からあるヤツです。特殊なものではありません。 もしかして、漢字が原因かもしれません。英数字だけの時はコレは出てこない、最初の数行だけだが。 解決方法はありますか。

  • エクセル関数:右側の文字列を抜き出す方法

    エクセル初心者です。 文字列の抜き出す方法で悩んでいます。 たとえば、A1~A5までに下のような 文字列が順に入っているとします。 C:\abc\TEST1.DOC C:\abc\def\TEST2.DOC C:\abc\def\ghi\jkl\TEST3.DOC C:\abc\def\ghi\TEST4.DOC C:\abc\def\TEST5.DOC これらの文字列の一番右側の'\'以降の文字列 (TEST1~5.DOC)を、B1~B5のセルに 出したいと思っているんですが できるのでしょうか? RIGHT関数や、LEN関数、FIND関数を使って できそうな気がするのですが どうも良い方法が思いつきません。 よろしくお願いします。

  • エクセル セルの並べ換え方法について教えて下さい

    縦 A列とB列に入力してある内容を縦一列にまとめて上下二段にする方法、 どなたか教えて下さい! A列   B列 abc def ghi jkl    mno pqr これを A列 abc def ghi jkl mno pqr という様にしたいのです。   

  • あいまい検索について

    お世話になっております。 早速ですが、SQLをどう書けばいいかで悩んでおります。 テーブルの文字列(varchar)の列をl検索します。 テーブルA------------------------ ID value 1 abc 2 defghijklmnopqrstu 3 vwxyzabcdefg 上記のようなテーブルです。 このテーブルのvalue列で、以下の文字列をもっともたくさん 含むものから優先で取得したいのです。 "abc"、"fg"、"vw"、"pqr"、"xyz" この場合、 IDが1の列は"abc" IDが2の列は"fg"、"pqr" IDが3の列は"fg"、"abc"、"xyz" のようにそれぞれ1個、2個、3個と含んでいますから。 SQLの結果セットにIDが3,2,1といった順番で含まれるように 取得したいのです。 where句にlikeを使うくらいはわかるのですが、それから先が 思い浮かびません。 どうかお知恵をおかしください。

    • ベストアンサー
    • MySQL
  • バッチでfor文で文字列の中身を繰り返したい

    バッチで、for文で、半角スペースやタブ以外で区切られた文字列から、区切り文字毎に 取り出したいのですが、最初の1回しか取り出せません。最後まで繰り返しが行われませ ん。 バッチでは、そもそも、半角スペースやタブ以外では、文字列の中身を繰り返すことは できないのでしょうか。 それとも、他に良い方法があります。 やっていることは、 例えば、 for文で、スラッシュ「/」で区切られた文字列からスラッシュ毎に取り出そうとしている のですが、最初の1回目しか表示されず、最後まで繰り返しが行われません。 以下、色々と試したのですが..... set str=abc/def/ghi/jkl/mno/pqr/stu/vwx/yz for %%a in (%str%) do echo %%a の場合は、 1行そのまま表示されます。(あたりまえです。) for "delims=/" %%a in (%str%) do echo %%a for "delims=/" %%a in ('echo %str%') do echo %%a の場合は、 「"delims=/" の使い方が誤っています。」となります。 for /f "delims=/" %%a in ('echo %str%') do echo %%a の場合は、 最初の1回目の「abc」しか表示されず、そこで処理が終わり、残りが表示されない。 期待している結果は、 これを、 abc def ghi jkl mno pqr stu vwx yz と表示させたい。 set str=abc def ghi jkl mno pqr stu vwx yz for %%a in (%str%) do echo %%a の場合は、 abc def ghi jkl mno pqr stu vwx yz と表示されます。 バッチでは、そもそも、半角スペースやタブ以外では、文字列の中身を繰り返すことは できないのでしょうか。 できる場合、その方法を教えてください。また、他に良い方法がありましたら、教えて下さい。

  • 特定の文字列が含まれているかどうか確認したい

    文字列 $a に、文字列 $b が含まれているかどう確認したいと思っています。 $a = "abcdefg"; $b = "cde" なら「真」としたいです。 (要するに、シェルの case や fgrep に似たことをしたい) ただし、文字列には記号が含まれている可能性もあるため、 正規表現も使いづらい(?)です。 具体的にやりたいことは、$a にはコンマ区切りのメールアドレスのリストが入っていて、 $b のメールアドレスが $a のリストに含まれていない場合のみ、$b を $a似追加すると いうことがやりたいです。 何か良い方法はないでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • エクセル 列にかかるAND検索

    「編集」の中の検索機能で、A列、B列にかけてAND検索することはできますか? 例えば、 「A列には[abc]を含み、かつB列には[def]を含む行をすべて拾い出す」

専門家に質問してみよう