1.大量データは元々は テキスト.txt 形式でしたが、コピペで Excel2010 へ貼り付けています
2.大量とは テキスト.txt 約5000枚 で 1テキスト.txt に 処理対象項目が 約200前後です
3.項目とは 例えば Spearmint 1.37% 7+8+9+9 x 9+9+9+9+8 といった
文字列です
4.項目中で必要項目は先頭文字Spearmintと文字1.37を数字1.37へ変換した値のみです
5.最終的に 約200前後ある項目を 『指定された規則』に従って 分類して数値を合算する事です
< 現在迄に行った事 >
6.先ず 必要文字列のみを 抽出すべく =LEFT(A1,FIND("%",A1)-1) を B1~処理対象項目
の最後までドラッグしております
7.此れにより Spearmint 1.37 等の文字列を全項目抽出しております
8.次に C に =IF(OR(ISNUMBER(FIND({<割愛>","Sunstar","Black Toney","Fair Play","Aja x","Swynford","St. Simon","Spearmint"",<割愛>"Charless O'Malley"},B1))),B1,"") を
C1~処理対象項目の最後までドラッグしております
補足-1):余りにも長いので 一部<割愛>しております
9.上記8.では 5.で記しました『指定された規則』に従って全項目から 必要な項目のみの集まり
を1系統仕分けしております(アップロード画像の グリーン色が該当しております)
補足-2):此処での 系統とは 『指定された規則』に従って全項目より 2系統と其他 または
3系統と其他 に仕分けする との意味です
アップロード画像は2系統の例です
10.8.と同じ 形式で もう1系統を E にて行っております
(アップロード画像の オレンジ色が該当しております)
補足-3):2系統共に含まれる項目はアップロード画像の パープル色が該当しております
11. D と F に =SUBSTITUTE(D1,LEFT(E1,FIND(" ",D1)),)*1 を D1~ と F1~
処理対象項目の最後までドラッグしております
< 御教示お願い項目 >
12.上記で見様見真似で用いた式では;
Q-1:Spearmintのような連続したスペルが項目名称で無く 例えばBlack Toneyとスペースが
入っている名称ではエラーしてしますので このエラーを回避する 修正した上記式 または
全く別の目的に合致した式を教えて下さい。
補足-4)項目には例えば Bill and Coo の様にスペースが2箇所ある項目名称とか
St. Simon の様に . が入っている項目名称とか
Charless O'Malley の様に ' が入っている項目名称とかが有ります
此れ以外の特徴あるエラーを起こしている名称は今の処無いです
Q-2:上記の式では必要無いセルも式を適用しているために #VALUE! が生じてしまいます
必要なセルのみに式を入れていては時間的にも作業的にも簡単にいかないので、
修正した上記式 または 全く別の目的に合致した式にて #VALUE! となるセルには
数字の 0 を挿入する形の式を教えて下さい。
補足-5)Excelほとんど使った事が無いです。
宜しくお願い申し上げます。
No.5ベストアンサー
- 回答日時:
ANo4です。
なんだか大変なことになっているようですね。
その辺になるとさっぱりわからないので、お役には立てないですが、Windows環境であればVBScriptも使えると思いますので、No4は関係なさそうです。
エクセルの関数表示でハングアップしちゃったみたいですが、その際にはマクロ(VBA)自体は動作していないので、内容が関係しているとも思えません。
エクセル本体のインストールがどこか不完全だったのか、あるいはOSがらみなのか・・・
智識の無い私が考えたところで、何の足しにもならないですね…(^_^;)
No.5
回答者: fujillin様
色々有難う御座いました。
当該PCは MB(マザーボード)破損 がメーカーでのテストにて確定しましたので MB交換 修理後に
折り返して頂きます。
御礼迄。
敬具
No.4
- 回答日時:
ANo3です。
もしかして、環境が違うのかな?
Windows環境ではなくて、正規表現(RegExp)が使えないとかでしょうか?
実は、エクセルVBAそのものには正規表現の機能がないので、VBScriptから呼び出して利用しているのですが、その環境がないのかしらん?
(その場合どのようなエラーになるのかわかりませんが・・・)
ANo3 fujillin 様
有難う御座います、状況説明です
1:リソース 光接続
PC-1系:OS Win7-64-pro Core-i5 Ram12 HDD500程度:4台
PC-2系:OS Win10-64-pro Core-i7 Ram32 SSD500程度:4台
他でofficeを必要としていたPC=0
2.今般の事案に伴いoffice2010を購入
3.『関数を標準モジュールに登録後にセルに=exのように入力中の状態で1 秒くらい待つと』を実行した結果:Excel画面にてグレーアウトからホワイ トアウト更にブラックアウトし全てのキー操作無効となりました
4.回復するのでは・・・で1時間程待ちましたが変化無く無論Esc、
Ctrl+Alt+Delete、なども全く受け付けませんのでパワーキー長押し で強制シャットダウンを試みましたが此れも受け付けないのでACアダプ タ切断しBATTも取り外しを行ないました
5.当該PCは非常にクリーンな状態を維持しており各種ログ等には何ら
異常なくBIOS、DRIVER、OS、API 等全て最新状態でした
6.通常であればBATT取り外しにて、CMOSがt(タウ)時定数にもより
ますがディスチャージされBIOS画面には入れる状態に約30分後には
なるのですが2時間程待ちましたがBIOS画面に入ません
7.このPCはPC-1系の1台で無論、元のテキストデータ約5000枚
正確には5302枚は、テキスト系 .txt や Excel系.xlsx 教えて頂き
初めて接した VBAを含む系は .xlsm で外付けHDD、SDD、USB、
CC等へ多重バックアップ保管していますのでデータは問題有りません
8. officeは1ランセンスしか購入しておりませんでしたのでSHOP
にてもう1ランセンス購入して参りました
9.非常に時間が経過したので、6.のPC-1系の1台はBIOSには入れる
のではと思ったのですが全く反応しないままですのでPC-1系のもう
1台へofficeをセットアップしました、上記PC同様にクリーンです
10.office系に防御策:第1階層 .exe は2010では38個の様ですので
サンドボックスを活用しご教示VBAをリトライします
No.2
- 回答日時:
ANo1です。
>画像の通りVBAでエラーFalseが生じており
画像が見えないのでわかりませんが、通常ユーザ定義関数内でエラーが発生した場合は、セルの表示が「#VALUE!」というエラー表示になります。
Falseの表示が出ることに心当たりはありません。
(関数が論理値を返すものである場合はそのような表示がされますが、今回はそうではないので)
>入れている式が機能しておりません。#NAME? となります。
全てのセルで#NAME?表示となるということですよね?
ユーザ定義関数も定義が認識されれば、他の関数とほぼ同様に扱われます。(計算内容が定義した内容で処理されるだけ)
#NAME? がでるのは、エクセル側で関数名が照合できないか、引数が名前付きなどの場合に照合ができないなどの意味だと思います。
上にも書きましたが関数内の計算でエラーが起きた場合は#VALUE!、セルの参照範囲が不適切な場合は#REF!など通常の関数とほぼ同様の表示になります。
さて、今回の#NAME? から考えられるのは、ユーザ定義関数が登録されていない(エクセル側で認識できていない)か、呼び出すときの関数名が正しくないなどがありがちと考えられます。
関数定義ができているかどうかのテストとして、関数を標準モジュールに登録後に、セルに
=ex
のように入力中の状態で1秒くらい待つと、エクセル側で候補関数のリストを出すと思いますが、そのリストに定義したextractionが表示されているかどうかでチェックできると思います。
表示されていない場合は、関数として認識されていないということで、うまく設定ができていないことになります。
表示されている場合は、そのリスト内から選択して入力を続ければ、関数名違いによる#NAME? エラーは自動的に回避することができるはずです。
上記以外にも、#NAME? エラーになる可能性はあるかもしれませんが、すぐには思いつきません。
No.2
回答者: fujillin様
ご親切に有難う御座います。
現在、ご教示賜った内容、其他WEB上にての情報類、などを用いまして確認中で御座います。
御礼迄。
No.1
- 回答日時:
こんにちは
先にお断りしておきますが、説明文が長く不要な情報がたくさんあるのと、添付の画像もほとんど読めないので、内容を理解せず、雰囲気だけで回答しています。
なさりたいことは文字列データ(例:Spearmint 1.37% 7+8+9+9 x 9+9+9+9+8)から、「Spearmint」と「1.37」を取り出したいということだと解釈しました。
数字部分には必ず「%」が最後についていて、(スペース、一連の数値、%)でセットになっていると仮定しました。
「Spearmint」に当たる部分はこの数値の前にある文字列全部という意味と考えています。
ご提示のように関数で文字列を分解して解析してゆく方法でも可能だと思いますが、私は関数をよく知らないので、「ユーザー定義関数」を利用する方法で一発で出せるのではと試してみました。
A列の各行に対象となるテキストがあるものとして・・・
1)VisualBasicの標準モジュールに下記の
ユーザー定義関数を記述しておく。(コピペで可)
2)B1セルに =extraction(A1,1) を入力
3)C1セルに =extraction(A1,2) を入力
4)B1、C1セルを選択して、必要なだけ下方にフィルコピー
これで、必要な情報が抽出できないでしょうか?
◇ユーザー定義関数
Function extraction(str As String, f As Integer)
Dim reg, regMatch
Set reg = CreateObject("VBScript.RegExp")
extraction = ""
reg.Pattern = "^(.*?)\s(\d?\.?\d+)%"
Set regMatch = reg.Execute(str)
If regMatch.Count = 0 Then Exit Function
If f = 1 Then
extraction = regMatch(0).SubMatches(0)
ElseIf f = 2 And regMatch(0).SubMatches.Count > 1 Then
extraction = regMatch(0).SubMatches(1)
End If
End Function
※ ユーザー定義関数に関しては、簡単な説明が以下のサイトにあります。
(検索すればたくさん見つかると思います)
http://www.kokodane.com/tec3_3.htm
※ 私が、なさりたいことを勘違いしていた場合は、まったくの見当はずれですので、無視してください。
No.1
回答者: fujillin 様
回答誠に有難うございます
1.>説明文が長く不要な情報がたくさんあるのと、添付の画像もほとんど読めない
A : 申し訳け御座いません、お詫び致します
2.>なさりたいことは文字列データ(例:Spearmint 1.37% 7+8+9+9 x 9+9+9+9+8)から
「Spearmint」と「1.37」を取り出したいということだと解釈しました
A : ご認識の通りです
3.>数字部分には必ず「%」が最後についていて
A : 100% 「%」が最後についております
4.>(スペース、一連の数値、%)でセットになっていると仮定しました
A : スペースの数は一定では御座いませんが、1つもスペースが無い、と云うケースは御座いません
最小でも1つのスペースが入っている様です
補足-1)事例 Swynford or Golden Boss 0.39% 7 x 8+5+5+5+4
: 一連の数値 といいますかデータは 名称 複数のスペース 数値(最大約40.00~最小約0.01)
直後に必ず% 其後は(不必要なデータです)色々な形の文字列 の構成です
補足-2)名称で一番多い事例 :Spearmint 英スペル1語
二番目に多事例-1 :La France スペース1箇所入語
稀名称事例-2 :Bill and Coo スペース2箇所入語
稀名称事例-3 :Maid of the Mist スペース3箇所入語
稀名称事例-4 :St. Samon . 入語
稀名称事例-5 :Charless O'Malley ' 入語
稀名称事例-6 :James-towns - 入語
稀名称事例-7 :San-in-Law - 2箇所入語
稀名称事例-8 :カリフォルニヤフラワ カタカナ語
5.>「ユーザー定義関数」を利用する方法で一発:
:凄いです、案内URLで導入方法確認中です
一先ず、御礼とさせて頂きます
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
Oracle 2つのDate型の値の差を...
-
エクセルVBAで5行目からオート...
-
必須入力項目と入力必須項目
-
セルの右クリックで出る項目を...
-
指定した項目の列削除
-
Accessレポートで特定条件で改...
-
2行目を表示できますか?
-
ORACLE SQL 文末 文字列 削除の...
-
【至急】Accessのフィールドの...
-
VBAで複数の数式セルを最終行ま...
-
エクセルグラフの凡例スペース
-
SUBSTRING 関数に渡した長さの...
-
Access テキスト型に対する指定...
-
Joy To Keyのマウスやキーボー...
-
Accessの表形式のフォームについて
-
APN設定について教えていただけ...
-
ビューでのデータエラー 「0で...
-
エクセル2003で四角の中に...
-
条件に一致した列の非表示の仕...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
セルの右クリックで出る項目を...
-
Access テキスト型に対する指定...
-
Oracle 2つのDate型の値の差を...
-
SUBSTRING 関数に渡した長さの...
-
必須入力項目と入力必須項目
-
APN設定について教えていただけ...
-
エクセルグラフの凡例スペース
-
VBAで複数の数式セルを最終行ま...
-
空白をそのままインポートする...
-
BIOSでAHCIに設定したいが、項...
-
アンドロイド おサイフケータイ...
-
Accessで数値型にNULLをInsert...
-
複数のレコードを1つのレコード...
-
ORACLEでLONG項目からCHAR項目...
-
SELECT文でLEFT関数を使うと未...
-
Access又はExcelで256項目を超...
-
Accessレポートで特定条件で改...
-
2行目を表示できますか?
おすすめ情報
本お願いは2016年4月14日から続く熊本地震で大きな被害を受け続けている
遠い知人達への細やかなお手伝いをできそうな事案をボランタリーとして
今も現地に赴いている知人と交信する中でピックアップして取り組みを開始
したもので御座います。
大量データテキスト約5000枚は大容量転送サービスにて取り寄せました。
重ねて、御教示をお願い申し上げます。
◇補足説明-1◇
1.本文説明での 例えば Black Toney を スペースを外して BlackToney とすることは
原則できません(名称としてスペースが入ったモノ(状態)が正規名称だからです)
同様に本文にてエラーを起こしている名称から何かを除く事も原則できません
★但し一旦Excelの機能で自動で除いて 例 文字1.37を数字1.37 へ変換合算できれば目的は
元の名称がExcelでは見やすいので可能になるような気がしますが、Excelの機能で自動で除く
機能(関数?)が有るのか無いのか分かっておりません★
2.本文にて スペースが2つの名称 Bill and Coo を記載しましたが、別のコピペしたExcelにて
スペースが3つの名称 Maid of the Mist が出て来ました。頻度から手動対応で、と思います
宜しくお願い致します
◇◇反省◇◇
1.元を正せば TEL で 交信しており スペアミント とか テディー とか ブルドッグ
などの聞き慣れた 言葉 の 英単語+何かを意味する率(パーセント表示 %)と思い込み
加えて データ量はテキスト500枚前後 と 1桁聞き間違えたのか 言い間違いだったの か・・・・
2.然し、引き受けた事実は変わらず何が何でも 集計計算してお返事をする責務を全うするのが
当然で反省してます
3.Excelにデータを移行して・・・Accessは一層分からないので・・・できそうでできないです
NETで検索を繰り返していますが VBA とか マクロ の解説がヒットしてしまい HINT
の式だけでも欲しいです
繰り返しですが、宜しくお願い申し上げます
◆◆◆◆至急 助言等をお願いします◆◆◆◆■■データ量が多くワーク的にピンチです■■
No.1回答者:fujillin様へ またはfujillin様の回答文に記載された VBA が分かる 皆様へ
◆ご提案頂きました VBA に関しまして(この表現が適切で無い可能性が有りますが便宜上
VBAと呼称させて頂きます。標準モジュールで定義されたFunctionプロシージャと呼ぶのかも
)。Excelもほとんど使っていない者で・・・。VBA のモジュール名はextractionとしており
ます。またデータが有るExcelシート名はex01 です。
アップロード画像の通りVBAでエラーFalseが生じており結果 fujillin様の回答文での
B1 と C1 に入れている式が機能しておりません。#NAME? となります。
どのように修正(デバッグ?)したら良いのかが分かりませんのでご教示下さい。