こんにちは
初投稿です。

早速ですが、VBAまたは関数について質問させて頂きたいのですが・・・

一つのセルに複数の数字と文字列がセルのE1混ざっている場合,
(12345abc678cdef9ghijk)と入っている場合

にこの例で行くとセルのA1に12345セルB1に678セルC1に9というように数字で表示させたいのです

が、最初関数で
A1=VALUE(MID(E1,1,5))
B1=VALUE(MID(E1,9,3))
C1=VALUE(MID(E1,16,1))
と言う形で数字だけ抜き出していたのですが

これだと数字の桁数が違ってくる(※正し文字列の長さは一緒 数字だけが桁が違ってきます)
と表示されなくなってしまうため、
出来れば関数をいじらなくても表示されるようにしたいのです。
VBAもしくは関数でこの問題を解決出来る方がいらっしゃるなら
どうぞよろしくお願い致します。

長文失礼致しました。

| A | B | C | D | E |
------------------------------------------------
1 | 12345 | 678 | 9 | | 12345abc678cdef9ghijk |
2 | | | | | |

このQ&Aに関連する最新のQ&A

A 回答 (2件)

 "文字列 数値 分割 vba" でググると、似たような回答が得られるかと存じますが、面白そうですので、ユーザー定義関数 を書いてみました(ただし、Excel 2003 です)。



A1:
=VALUE(cutoutnum($E1,COLUMN(A1)))
と入力し、これを B1:C1 に オートフィル します。

[標準モジュール]
Function cutoutnum(myStr As String, myIdx As Double) As String
 Dim myStart As Long
 Dim myMidStr As String
 Dim myResStr As String
 For myStart = 1 To Len(myStr)
  myMidStr = Mid(myStr, myStart, 1)
  If Not IsNumeric(myMidStr) Then
   myMidStr = " "
  End If
  myResStr = myResStr & myMidStr
 Next
 cutoutnum = Application.WorksheetFunction.Trim(myResStr)
 cutoutnum = Split(" " & cutoutnum)(myIdx)
End Function

この回答への補足

すみません今入力してみたのですが、

12,345abc678cdef9ghijkとカンマがついてる場合カンマは飛び抜かして同じく
A1に12345と表示させたいのですが、

ご教授お願い出来ませんでしょうか?

お手数ではありますが、よろしくお願い致します。

補足日時:2011/04/23 02:15
    • good
    • 0
この回答へのお礼

早速意見ありがとうございます。

早速こちらのほうで検証してみます!

お礼日時:2011/04/23 01:05

>12,345abc678cdef9ghijkとカンマがついてる場合カンマは飛び抜かして・・・


 この場合は、
For myStart = 1 To Len(myStr)
の前に
myStr = Replace(myStr, ",", "")
を挿入してください。

 同様に小数点が付いているような場合もあろうかと存じますが、その場合は、
If Not IsNumeric(myMidStr) Then

If myMidStr <> "." And Not IsNumeric(myMidStr) Then
に置き換え、更に、
cutoutnum = Application.WorksheetFunction.Trim(myResStr)
の前に、下記2行を挿入してください。
myResStr = Replace(myResStr, " .", "")
myResStr = Replace(myResStr, ". ", "")

 以上により、「カンマ」及び「小数点」の2つの問題を両方とも回避する場合は、下記のようなことになります。

Function cutoutnum(myStr As String, myIdx As Double) As String
 Dim myStart As Long
 Dim myMidStr As String
 Dim myResStr As String
 myStr = Replace(myStr, ",", "")
 For myStart = 1 To Len(myStr)
  myMidStr = Mid(myStr, myStart, 1)
  If myMidStr <> "." And Not IsNumeric(myMidStr) Then
   myMidStr = " "
  End If
  myResStr = myResStr & myMidStr
 Next
 myResStr = Replace(myResStr, " .", "")
 myResStr = Replace(myResStr, ". ", "")
 cutoutnum = Application.WorksheetFunction.Trim(myResStr)
 cutoutnum = Split(" " & cutoutnum)(myIdx)
End Function
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセル プルダウンの作り方

お世話になります。
エクセルでプルダウンの作り方を教えていただけませんでしょうか?
住所を▼のボタンでクリックしたら【北海道,青森,秋田,岩手・・・】などの選択ができるようにしたいのです。
宜しくお願いします。

Aベストアンサー

メニューから「データ」、「入力規則」、「設定」で「入力値の種類」を「リスト」を選択します。
そうすると「元の値」という表示がでますので、そこで前もって作っておいたリストの範囲を指定します。
多くないのでしたら、そのままそこにカンマで区切って入力しても出来ます。

QExcel関数 別シート参照現シートに合計値を表示

お世話になっております。
Excel関数について質問させてください。

まず私の環境にExcelが入っておらず、OpenOfficeの3.3を代用しております。
カテ違いでしたらごめんなさい・・・。

【質問】
Sheet1のリスト(A列とする)に存在する文字列を
Sheet2の複数列(D列、F列、H列)に一致する文字列毎の数値(E列、G列、I列)の合計を
Sheet1の列(B列とする)に表示したい

【データ例】
○Sheet1
 A列 B列
 A   3
 B   10
 C   6
 D   0

○Sheet2
 D列 E列 F列 G列 H列 I列
 A   1   G  0   A  1
 C   2   H  2   B  2
 B   3   A  1   C  4
 E   4   B  5   E   5

【試した事】
まず一辺には無理だと思い、
Sheet1のB列に以下の関数を入れてみました
=IF('Sheet2'.D1=A1;"a";"b")

これで一見判定が出来てる風だったのですが、
Sheet1のB1列に"a"と出て、他全て"b"と出ました。

恐らく、順不同で比較項目が並んでいる所為だと思いますが、
この並び順を変更するわけにはいかず・・・。

そもそも、文字型と数値型が一つの関数に指定出来るのかも不明で・・・。

どなたかわかる方、ご教授お願いいたします。

わかりにくい例ですみません。

【補足】
私の個人的見解として、関数で出来る気がしないのですが、どうなんでしょう・・・?
もし、関数で無理ならVBかJavaでゴリゴリ組みます。

お世話になっております。
Excel関数について質問させてください。

まず私の環境にExcelが入っておらず、OpenOfficeの3.3を代用しております。
カテ違いでしたらごめんなさい・・・。

【質問】
Sheet1のリスト(A列とする)に存在する文字列を
Sheet2の複数列(D列、F列、H列)に一致する文字列毎の数値(E列、G列、I列)の合計を
Sheet1の列(B列とする)に表示したい

【データ例】
○Sheet1
 A列 B列
 A   3
 B   10
 C   6
 D   0

○Sheet2
 D列 E列 F列 G列 H列 I列
 A   1  ...続きを読む

Aベストアンサー

 OpenOfficeは使用した事が無いため、OpenOfficeでも可能なのかは判りませんが、Excel関数であれば、B1セルに次の関数を入力してから、B1セルをコピーして、B2以下に貼り付けると良いと思います。

=SUMIF(Sheet2!$D:$D,$A1,Sheet2!$E:$E)+SUMIF(Sheet2!$F:$F,$A1,Sheet2!$G:$G)+SUMIF(Sheet2!$H:$H,$A1,Sheet2!$I:$I)

Qエクセルでプルダウンメニューの作り方

  エクセルの画面で、よく三角形を逆さまにした形をクリックするといくつかメニューが出てき、どれかを選べるようになっていますが、その作り方を教えてください。
 会社で人事を担当していますが、三角形(プルダウンボタン)をクリックすると社員氏名一覧が表示され、そこから選択できるようにしたいのです。
 しばらく自力でいろいろやってみましたが、さっぱり見当がつかず、どうやればいいのか分かりませんでした。よろしくお願いします。

Aベストアンサー

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならないでしょうか?
Excel2007の場合は↓のURLが参考になるかもしれません。

http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-ny_kis2.html

尚、同一Sheetに「名簿表」を作成する場合は名前定義する必要はなくて
「元の値」の右側の四角をクリックし、リスト表示したいセルをそのまま範囲指定すればOKです。

以上、お役に立てば良いのですが・・・m(_ _)m

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならない...続きを読む

Q会員投稿サイトのCMSについて

WordPressにてBuddyPressを使ってレシピを投稿できる会員サイトを制作しました。(会員数1500名)
ですが、制作会社に言われるがままに出来上がったきたものは、サイトを開くのに時間がかかり
データベースのテーブルが1万を超えているため、アクセスに時間がかかり、管理画面からの編集も困難になってしまい、またページビューも以前のXoopsで制作していた時期に比べて半分以下になってしまいました。(今回はリニューアル+データ移行で制作を依頼しました)

CDSの導入とキャッシュ系のプラグイン等で現在は閲覧には問題ないところまで出来ましたが、会員ログインして会員が、プロフィール編集をするだけで非常に時間がかかってしまいます。またサイトの肝であるレシピを投稿(=ブログの記事を投稿)するにも投稿反映まで時間がかかり、会員離れが見受けられます。

そもそも調べてみると「WordPress+BuddyPress」は会員サイトにはむいていないとも。。
今更ですが、CMSを変えて再構築したほうがいいのではないかと考えています。(あるいはWordPress+他の何か・・)

そこで、このようなサイトを構築するには、どのCMSを使ったらよいでしょうか?
「会員サイト」「CMS」では一応調べましたが、とにかく会員がスムーズに投稿できる、表示スピードが遅くならないのを優先したいと思います。
会員から投稿された画像+テキストはトップページに自動的に新着順に表示されカテゴリで分類されて検索をかけることができるようになっています。
SEO的にはサイトがニッチな分野なので、任意の用語を入れるとトップに出るのでそれは問題ないと思います。

WordPressにてBuddyPressを使ってレシピを投稿できる会員サイトを制作しました。(会員数1500名)
ですが、制作会社に言われるがままに出来上がったきたものは、サイトを開くのに時間がかかり
データベースのテーブルが1万を超えているため、アクセスに時間がかかり、管理画面からの編集も困難になってしまい、またページビューも以前のXoopsで制作していた時期に比べて半分以下になってしまいました。(今回はリニューアル+データ移行で制作を依頼しました)

CDSの導入とキャッシュ系のプラグイン等で現在は閲...続きを読む

Aベストアンサー

CMSはあくまでも「コンテンツ」を管理するものであり、データを管理するものではない、ということですかね。
データアクセスは冗長で重く、ちょとした内容を表示するために何度もDBをアクセスするのがCMS(特にWordpress)の特徴で、そもそも大量のデータを処理する用途には頭から向いていません。
DBキャッシュプラグインで見かけ上の速度が更新しても、同時アクセス集中など、ちょっとクリティカルな状況になると、容易にハングアップするでしょう。

またBuddyPressも、いわゆるな「不特定多数登録による投稿システム」には向いておらず、限定的な会員が互いの投稿を批評したり、相互交流を行う機能が充実した「Buddy=濃い」SNSぽいサイトを構築するためのプラグインです。
また、大量にメモリを食うので有名で、一般のレンタルサーバではまずマトモに動作しないでしょう。
このまま使うのなら、ハウジングサーバを用意して大量のメモリを乗せてください。
(てか制作会社でもその程度は理解していたと思うのですが)

BuddyPressを使わず、基本的な会員登録~プロフィール編集~レシピ投稿~簡単な匿名コメントのような機能を作りこんで、WordPressの管理画面に置くのもいい方法です。

あるいはいっそ、CakePHPなどのWebフレームワークで会員管理・レシピ投稿システムを作成し、Wordpressからは従来からのサイトコンテンツ(各種の特殊ページや新着情報、運営ブログ等)だけを読み込む方式にするといいと思います。

どちらの方法をとっても、パフォーマンスは劇的に改善するでしょう。

CMSはあくまでも「コンテンツ」を管理するものであり、データを管理するものではない、ということですかね。
データアクセスは冗長で重く、ちょとした内容を表示するために何度もDBをアクセスするのがCMS(特にWordpress)の特徴で、そもそも大量のデータを処理する用途には頭から向いていません。
DBキャッシュプラグインで見かけ上の速度が更新しても、同時アクセス集中など、ちょっとクリティカルな状況になると、容易にハングアップするでしょう。

またBuddyPressも、いわゆるな「不特定多数登録による投稿シス...続きを読む

Qエクセル(Excel) 納品書の作り方【画像修正版

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が見にくかったのでシート<CENTER></CENTER>だけにしました。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルでコピー!
そのまま最後の24行目までコピーしておきます。

F4セルには
=IF(COUNTBLANK(B4:E4),"",D4*E4)
という数式を入れ、F24までオートフィルでコピー!

これでB列に商品番号を入力すればSheet2のデータが反映され、
E列に数量を入力でF列に金額が表示されると思います。

最後に合計金額のF26セルは
=IF(COUNT(F4:F24),SUM(F4:F24),"")
手数料のF27セルは
=IF(F26="","",F26*0.2)

これで何とか形にならないでしょうか?

※ 振込金額の欄は不明ですので手を付けていません。

参考になりますかね?m(_ _)m

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルで...続きを読む

Q投稿サイトを構築しやすいCMSについて

教えてください。

以下のような要件のサイトを作りたいと思っています。

必須要件
1.ユーザーが自由に投稿(テキスト)できる(会員登録などは不要)
2.youtubeの動画のURLを張り付けると、youtube動画がこのサイトに見える(mixiの日記でできるようなもの)
3.ユーザーが上げた動画に対して、コメントを付けることができる
4.公序良俗に違反するようなものは、通報機能があり、管理者が無条件で削除できる。
5.上記投稿されたものは、youtubeの動画がメインなため、以下のようなサイトの見え方にしたい。
  (参考サイト)http://phpmotion.net/  ※このサイトは動画共有サイトで構築されており、予算が膨大にかかるようですので、個人には難しいとのことでした。)

このCMSが一番上記要件を満たせそうでも構いません。
お詳しい方、ぜひご教授をお願いします!!

Aベストアンサー

>1.ユーザーが自由に投稿(テキスト)できる(会員登録などは不要)

匿名の掲示板や、ブログのコメント的なイメージでしょうか?

>2.youtubeの動画のURLを張り付けると、youtube動画がこのサイトに見える(mixiの日記でできるようなもの)

これは投稿時にURLを判別して変換すればよいので、自力で実装できるかと思います。
もしかしたら、
http://code.google.com/intl/ja-JP/apis/youtube/overview.html
らへんにいいものがあるかもしれません(未確認)。

>3.ユーザーが上げた動画に対して、コメントを付けることができる
>4.公序良俗に違反するようなものは、通報機能があり、管理者が無条件で削除できる。
>5.上記投稿されたものは、youtubeの動画がメインなため、以下のようなサイトの見え方にしたい。

こう言った機能や、デザインまで用意されたCMSは無いかと思います。
そこら辺は自力でやる必要があるかと。

CakePHPあたりでしっかり組むか、あるいは掲示板系のCMSとか良いかもしれませんね。
http://www.google.co.jp/search?q=%E6%8E%B2%E7%A4%BA%E6%9D%BF%E3%80%80CMS&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&hl=ja&client=firefox-a

>1.ユーザーが自由に投稿(テキスト)できる(会員登録などは不要)

匿名の掲示板や、ブログのコメント的なイメージでしょうか?

>2.youtubeの動画のURLを張り付けると、youtube動画がこのサイトに見える(mixiの日記でできるようなもの)

これは投稿時にURLを判別して変換すればよいので、自力で実装できるかと思います。
もしかしたら、
http://code.google.com/intl/ja-JP/apis/youtube/overview.html
らへんにいいものがあるかもしれません(未確認)。

>3.ユーザーが上げた動画に対して、コメン...続きを読む

Qエクセル(Excel) 納品書の作り方【改めて】

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が貼り付けてあります。商品名は1番以外伏せさせていただいています。
くっつけてありますが、左側がシート1・右側がシート2です。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

画像がいまいちよく見えないのですが、納品書の項目は左から、No、商品番号、商品名、単価、数量、金額でいいのでしょうか(名前は多少違っていても意味があっていればもんだいないです)

でしたら、
C1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,2,FALSE))
D1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,3,FALSE))
E1セルは空白で
F1セルに=IF(D2="","",D2*E2)
といれて、C1からF1までをコピーしてその下の行にタテに貼り付ければ出来ますよ。
おそらくエラーが出たのは、コピーしたときにVLOOKUP関数の最初のセルの指定がずれてしまっているのでは無いかと思いますよ。     

QKingsoft office 2010について 上記バージョンを使っていたのですが、最近、いきなり

Kingsoft office 2010について
上記バージョンを使っていたのですが、最近、いきなり落ちてしまう事が増えたので2016バージョンに変更を検討するため試用版をDLしました。
そうすると、Spreadsheetsの数字の書式を「カテゴリー…数値、桁区切りを使用、赤字」で設定しても、一度ファイルを閉じるとなぜか書式設定が「カテゴリー…ユーザー設定、#,##0_;[赤]¥-#,##0¥¥」となり、実際の表記も「¥-9,000¥\」のようになってしまいます。
これは試用版のみの不具合なのでしょうか。
同様の不具合が発生して解決した方がいればご教授ください。
よろしくお願いします。

Aベストアンサー

回答にはなりません。
所詮は中国製の安物ソフト。
   
お金を出すのが嫌なら以下を使う。
http://freesoft-100.com/review/libreoffice.php
    
あるいは本家のMicrosoft Officeを使う。

Qエクセル2007でプルダウンで選んだものに反応

Excel2007でプルダウンで選んだものに反応して隣のセルが自動入力される方法(エクセル2007)
A1をプルダウンで「猫」「犬」から選べるようにし、「猫」を選んだ場合B1に自動に「111」が、「犬」を選んだ場合B1に自動に「222」と入力されるようにしたいです。
ご教授の程、宜しくお願いします。

Aベストアンサー

VLOOKUP関数での方法です。
(1)別シートに入力文字列と対応コード表を作成。(仮にSheet2のA:B列範囲で順不同)
(2)B1に=IF(COUNTIF(Sheet2!A:A,A1),VLOOKUP(A1,Sheet2!A:B,2FALSE),"")を設定
   入力文字列が存在しない場合は空白としています。

Q特殊な関数の保存場所は?

人からあるファイルをもらったのですが、自分で関数を作っているらしくそれがどこにあるのかわからないので範囲を変更したくてもできません。

具体的には
"DATE_AREA"という関数らしきものがあり、その範囲は特定のシートの"B5:K34"に指定されているのです。
その範囲を広げて扱うデータ数を増やしたいのですが、シート上にもVBAの中にもどこを探しても見当たらないのです。

こういう場合、探すとしたらどこが考えられますか?
漠然とした質問なのですが、困っているのでどなたか教えていただけませんか?
よろしくお願いいたします。

Aベストアンサー

それは関数ではなく、「名前」です。
Excelのメニューから、「挿入」→「名前」→「定義」を選択すると、「DATE_AREA」というのがあるのでは。そこにフォーカスをあてると、「参照範囲」にその名前が示しているセルの範囲が表示されるはずです。

そこで「参照範囲」をあなたの希望する範囲に修正する、ということで。


人気Q&Aランキング

おすすめ情報