エクセルの文字列関数を使っての操作
◇-?エクセルの文字列関数を使っての操作-武藤-11/16-15:53(90)-No.307307 ┣?!Re:エクセルの文字列関数を使っ...-半端者-11/16-16:17(90)-No.307310 ┃┗?!!追記...-半端者-11/16-16:26(90)-No.307314 ┃ ┗?!!?Re:追記...-武藤-11/16-16:56(89)-No.307320 ┃ ┗?!!?!Re:追記...-半端者-11/16-17:25(89)-No.307330 ┃ ┗?!!?!【解決】Re:追記...-武藤-11/16-20:53(85)-No.307369 ┗?!Re:エクセルの文字列関数を使っ...-白茶-11/16-17:09(89)-No.307327 ┗?!-Re:エクセルの文字列関数を使っ...-武藤-11/16-17:37(89)-No.307333 ┗?!-!Re:エクセルの文字列関数を使...-白茶-11/16-17:45(89)-No.307336 ┗?!-!!で、別案です。...-白茶-11/16-18:22(88)-No.307340 ┗?!-!!【解決】Re:で、別案です。...-武藤-11/16-20:50(86)-No.307368
▲このページのトップに戻る
▲このページのトップに戻る
▲このページのトップに戻る
▲このページのトップに戻る
▲このページのトップに戻る
▲このページのトップに戻る
▲このページのトップに戻る
▲このページのトップに戻る
▲このページのトップに戻る
▲このページのトップに戻る
▲このページのトップに戻る
307307 | エクセルの文字列関数を使っての操作 | 武藤 | 2005/11/16-15:53 |
メーカー名: レノボ(lenovo) 元アイビーエム(IBM) OS名:WindowsXp パソコン名:ThinkPad R50e ソフト名:Excel2000 使用回線:その他回線 LAN -- 一つのセル内にある用語の中に含まれている、最後の「|」から右側の単語を 抜き出すという作業をしなければいけないのですが、、、。 具体例は、 セルA1に、 えんぴつ|消しゴム|確保 セルA2に、 ボールペン|マジック|必要|人数 セルA3に、 えんぴつ|消しゴム|使用|頻度|調べ|中 セルA4に、 ボールペン|えんぴつ|その他|雑貨|年間|使用|回数 セルA5に、 弁当|持参|日 となっていて、最後の「|」で区切られた右側にくる単語を抜き出し、 セルB1に、 確保 セルB2に、 人数 セルB3に、 中 セルB4に、 回数 セルB5に、 日 としたい。 仕事仲間にマクロで処理できると言われたのですが、できれば関数で処理 したいと思っています。 よろしくお願いします。 |
▲このページのトップに戻る
307310 | Re:エクセルの文字列関数を使っての操作 | 半端者 | 2005/11/16-16:17 |
記事番号307307へのコメント 武藤さんは No.307307「エクセルの文字列関数を使っての操作」で書きました。 最後尾の文字列が2文字と決めて、 ・「中」や「日」は、その文字の前後いずれかに1文字分のスペースを入れて2文字 とする。 B1のセルに「=RIGHT(A1,2)」と入れて、B列の最終行までコピー。 |
▲このページのトップに戻る
307314 | 追記 | 半端者 | 2005/11/16-16:26 |
記事番号307310へのコメント 半端者さんは No.307310「Re:エクセルの文字列関数を使っての操作」で書きました。 かなり行数が多く、A列の「中」「日」の前後いずれかにスペースを入れるのが 面倒くさければ、 A列の項目記号のところでクリック(A列全体が反転)して、 [編集]→[置換]→[検索する文字列]に「中」と入力 同 [置換後の文字列]に「中 」と入力 →「全て置換」をクリック 以下、「日」も同上 |
▲このページのトップに戻る
307320 | Re:追記 | 武藤 | 2005/11/16-16:56 |
記事番号307314へのコメント 半端者さんは No.307314「追記」で書きました。 ありがとうございます。 早速やってみたところ、最後の用語が3文字とりたいものや、8文字だったなど、 最後の「|」からの文字数がまちまちだったため、 長い単語の例としては、 「オペレーション」と、したいところが、「ョン」となってしまい ました。 もちろん、例に挙げたとおり1〜2文字が一番多いように思うのですが、データが 10,000行に近いので、確認が困難です。 また、置換してのスペース入れは、置換したい種類が多いので、またこれも 困難です。 解決法はあるでしょうか? |
▲このページのトップに戻る
307330 | Re:追記 | 半端者 | 2005/11/16-17:25 |
記事番号307320へのコメント 武藤さんは No.307320「Re:追記」で書きました。 そのファイルの使い方によりけりですが、裏技で。 1.そのファイルのA項目の「|」を「 (スペース)」に置換え (先に回答した方法で、1発で置換えはできるはず) 2.その入力されているEXCELのファイルを「スペース区切りテキストファイル形式」 (拡張子:prn)で保存 3.保存した(拡張子:prn)のファイルを開く(スペース区切りを指定) 4.開いたファイルは、一番右側の列に表示させたい文字列が入っているはず 使えるかどうかは、その元ファイルに他のデータが入っているか、ただ単に目的の 文字列を単一項目に表示できれば用が足りるのかで違ってきます。 |
▲このページのトップに戻る
307369 | Re:追記 | 武藤 | 2005/11/16-20:53 |
記事番号307330へのコメント 半端者さんは No.307330「Re:追記」で書きました。 早速、技を使わせていただきました。 裏技、教えていただけてよかったです。 データはきれいに仕上がりました。ありがとうございました。 他の業務が入ってしまい、ご連絡遅くなったことをお詫びします。 |
▲このページのトップに戻る
307327 | Re:エクセルの文字列関数を使っての操作 | 白茶 | 2005/11/16-17:09 |
記事番号307307へのコメント 武藤さんは No.307307「エクセルの文字列関数を使っての操作」で書きました。 こんにちは。 関数でこなすなら、 B1=RIGHT(A1,LEN(A1)-MAX(IF(MID(A1,ROW(OFFSET($A$1,,,LEN(A1))),1)="|",ROW(OFFSET($A$1,,,LEN(A1)))))) を配列数式(確定時に「Ctrl」「Shift」「Enter」同時押し)で。 B1を好きなだけフィルダウン。 なんて、どうでしょうか? |
▲このページのトップに戻る
307333 | Re:エクセルの文字列関数を使っての操作 | 武藤 | 2005/11/16-17:37 |
記事番号307327へのコメント 白茶さんは No.307327「Re:エクセルの文字列関数を使っての操作」で書きました。 ありがとうございます。 早速、作業したのですが、取り出したいセルAの中に入っている文字すべてが そのままセルBに返されてしまいました。 自分事で申し訳ありませんが、よろしくお願いします。 |
▲このページのトップに戻る
307336 | Re:エクセルの文字列関数を使っての操作 | 白茶 | 2005/11/16-17:45 |
記事番号307333へのコメント 武藤さんは No.307333「Re:エクセルの文字列関数を使っての操作」で書きました。 >取り出したいセルAの中に入っている文字すべてが >そのままセルBに返されてしまいました 配列数式(確定時に「Ctrl」「Shift」「Enter」同時押し) にしないと、そうなります。 配列数式にすると、数式バー内の式が「{ }」で囲まれます。 囲まれてなかったら配列数式になってません。 追記:式の解説です。 大枠となる式は =RIGHT(A1,「A1の総文字数」-「最後の"|"は何文字目」) です。 MAX(IF(MID(A1,ROW(OFFSET($A$1,,,LEN(A1))),1)="|", ROW(OFFSET($A$1,,,LEN(A1))))) この部分が「最後の"|"は何文字目」を判定する式です。 MID(A1,ROW(OFFSET($A$1,,,LEN(A1))),1)="|" A1の文字列を一文字ずつ垂直方向の1次元配列に格納し、 (↑あえて難しく表現。補足は後程) それぞれの要素が"|"と等しいかを判定。 もし(IF)判定がTRUEなら、ROW(OFFSET($A$1,,,LEN(A1))) で、該当要素番号を返す(ROWを代用)。 返ってきたROWの最大値(MAX)が「最後の"|"は何文字目」の答えです。 補足: 空きセルに =MID(A1,ROW(OFFSET($A$1,,,LEN(A1))),1) と入力し、確定せずに「F9」キーを押せば、 「A1の文字列を一文字ずつ格納した垂直方向の1次元配列」 が、どういうものなのか確認できます。 =ROW(OFFSET($A$1,,,LEN(A1))) も同様です。 |
▲このページのトップに戻る
307340 | で、別案です。 | 白茶 | 2005/11/16-18:22 |
記事番号307336へのコメント 白茶さんは No.307336「Re:エクセルの文字列関数を使っての操作」で書きました。 この方法は、元データが1列である場合に使えます。 コレがマズい場合は、 目的のデータ1列のみを別ブックにコピペし、 抽出後に元ブックへ戻してください。 今、A列にデータが来ているとします。 A列全体を選択し、「データ」→「区切り位置」で 「区切り位置指定ウィザード」を開きます。 「元データの形式」で「カンマやタブなどの区切り文字によって・・・」 を選択して「次へ」 「区切り文字」の「その他」にチェックを入れて その横の箱に「|」を入れて「完了」 これで、「|」によってデータが区切られ、 各要素が水平方向に分配されたと思います。 で、Sheet2のA1に =INDEX(Sheet1!1:1,COUNTA(Sheet1!1:1)) として普通にENTER。 「0」が返って来るまでフィルダウン。 これで、Sheet1の各行にある最後の要素だけが 抽出されていると思います。 「形式を選択して貼り付け」で元のブックに戻して下さい。 |
▲このページのトップに戻る
307368 | Re:で、別案です。 | 武藤 | 2005/11/16-20:50 |
記事番号307340へのコメント 白茶さんは No.307340「で、別案です。」で書きました。 ご説明ありがとうございます。すみません。 データはきれいに仕上がりました。ありがとうございました。 他の業務が入ってしまい、ご連絡遅くなったことをお詫びします。 |
何か一言(本ページで参考になったならないを含めて残してあります)
◎:解決 ○:参考になった ×:参考にならなかった !:アドバイスあり
参考 | 回数 | 投稿日時 | 何か一言 |
---|