- ベストアンサー
文字列と複数の数を含む複数のセルから最大値を抽出
マクロを自動記録して多少いじる程度のVB初心者です。 題の通りなのですが、以下のような書式から、ある数値だけを取り出したいのです。 (取り出したい数値):(ユーザー名):(日時) (ユーザーのコメント) 取り出したい数値、ユーザー名、日時は一つのセルに入っており、 ユーザー名のある行とコメントのある行は別です。 コメントは数行に及ぶ場合もあります。 取り出したい値は整数で桁は変わります。 具体例↓ 3859 :高橋5000:2010/12/25(日) 00:33:50 3000円くらいですかね こういった書式が、ある列に1~20個並んでいます。 この中から(取り出したい数値)が最も大きいセルの、 (取り出したい数値)だけを取り出し、 特定のセルに貼り付けたいのですが可能でしょうか? やたらと局所的で申し訳ないのですがご教授願います。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
関数でもやって出来ないことは無さそうですが,マクロで行いたいならその方が素直で簡単は簡単です。 「対象になる行」と「コメント行」の識別がイマイチ曖昧ですが,適宜応用してみてください。 sub macro1() dim h as range dim res as long for each h in range("A1:A" & range("A65536").end(xlup).row) if instr(strconv(h.value,vbnarrow), ":") > 0 then res = application.max(res, val(split(strconv(h.value, vbnarrow), ":")(0))) end if next msgbox res end sub
その他の回答 (1)
- nobby-frog
- ベストアンサー率27% (39/140)
置換・区切り・オートフィルタでいけそうですね。 ポイントは「区切り」の活用です。元々は、苗字と名前がスペース等で区切られているものを 別々のセルに分割するときに使う機能です。 例: 「教えて goo」 → スペースで「区切り」を適用 →「教えて」と「goo」に分割 自分のExcel2003での手順としては、 1:置換(Ctrl+H)でコロンをスペースに スペースじゃなくても「区切り」適用されるならなんでも。 2:データ→区切り位置 でスペースで区切る 3:セルが分割されるので、先頭行に適当なタイトルを入れてオートフィルタ適用 こんな感じでどうでしょう?
お礼
素早い回答ありがとうございます! データの区切りは以前使用していたのですが、 コメントやユーザー名が長いせいもあり、 セルの幅が歪んでしまって後始末が大変だったのです。 ですが、回答してくださったこと非常に嬉しく思います。 重ねてありがとうございました。
お礼
いまいち意味が解ってない所もありますが出来ました! ありがとうございます! コメントに「:」が入ってるとマズイので 検出条件を「:20」にして使ってみます。88年使えれば十分です。