• 締切済み

VBAでの質問

エクセルVBAにて下記のようなことを行うにはどのようにしたら良いのでしょうか? (1)テキストデータ取り込み (2)取り込んだデータから、あるフレーズ(文字)の後に続く文字を抽出 セルに挿入 (3)その文字から次の同じフレーズまでにある特定のフレーズの後ろに続く数字を取り出し、日付と時刻に分けてセルに挿入 フレーズは 2つあります。start finish (4)間の不要な行の削除して体裁を整える。不要な項目がある為 テスト環境にてPCよりログとして出力されるデータをエクセルで 加工し結果が直ぐに分かるような表をマクロorVBAにて作成したいのです。 出来れば順序良く、ここまでだったらこの方法で、とういう風に教えて いただければ助かります。 宜しくお願いします。

みんなの回答

noname#140971
noname#140971
回答No.2

<c:\temp\siberianhasky.txt> The Siberian Husky is a medium-sized working dog who is quick and light on his feet; free and graceful in action. 今、上述のテキストファイルを読み込んで、'Siberian Husky'という単語が見つかったら抜き出してみましょう。 抜き出すのは、'working dog' と ';' との間。 Private Sub CommandButton1_Click()   Dim I     As Integer   Dim N     As Integer   Dim strTexts() As String   Dim strText  As String      strTexts() = FileReadArray("C:\temp\siberianhusky.txt")   N = UBound(strTexts())   For I = 0 To N     If InStr(1, strTexts(I), "Siberian Husky", vbTextCompare) > 0 Then       strText = Trim(CutStr(CutStr(strTexts(I), "working dog", 2), ";", 1))       Debug.Print strText     End If   Next I End Sub 実行結果を確認してみましょう。 [イミディエイト] who is quick and light on his feet 確かに、目的は達成しています。 さて、マル投げの質問に全てを回答しても意味はないでしょう。 第一、質問と回答がどこまで噛み合っているのかも定かじゃないですからね。 そこで、ヒントだけ。 FileSystemObject を利用してファイルを呼び込んでいるということ。 文字列の切り取りでは Split関数を利用しているということ。 Public Function FileReadArray(ByVal FileName As String) As String()   Dim fso    As FileSystemObject    Dim strTexts() As String       ・・・・ End Function Public Function CutStr(ByVal Text As String, _             ByVal Separator As String, _             ByVal N As Integer) As String   Dim strDatas() As String      strDatas = Split("" & Separator & Text, Separator, , 0)   CutStr = strDatas(N * Abs((N <= UBound(strDatas)))) End Function これだけの情報があれば、何とかなるんじゃないかな。 おまけ: [イミディエイト] ? Cutstr("The Siberian Husky is a medium-sized working dog who is quick and light on his feet;", "working dog", 2) who is quick and light on his feet; ? Cutstr("Twho is quick and light on his feet;", ";", 1) Twho is quick and light on his feet Split関数での抜き出しを2回行えば、囲まれている範囲が抜き出せるということです。 strText = Trim(CutStr(CutStr(strTexts(I), "working dog", 2), ";", 1)) は、上述の抜き出しをコード化しただけ。 ここで、「なーるほど、ガッテンだー」と思えば、ゴールは近い! 跳び越すべきハードルは抜き出しだから・・・。 後は、ともかく、自分なりにコードを書いてから・・・。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

データの提示が無いので、データを読み込んで文字列有無と位置をチェックする方法のみになります。 プログラムが組めるなら下記が参考になるでしょう。 テキストデータの読み込み http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110.html InStr関数 http://officetanaka.net/excel/vba/function/InStr.htm

関連するQ&A

  • エクセルVBAでこういう事は可能でしょうか?

    エクセルで同一セル内に存在する特定の文字を検出する方法を教えて下さい。 (例) A1のセルに 変更(2004/10/21) 変更(2004/1/15) 変更(2004/5/10) B1のセルに 変更(2004/10/3) 変更(2004/10/1) 削除(2004/7/23) 上記のようなデータがあるとします。検索条件として、変更の文字が付いてて、日付が(2004/10)のみデータだけ検出したいのです。上記の例で言うと、3件。 VBAを使って上記の条件でデータを抽出する事は可能でしょうか?

  • VBA でセルの文字列に"-"等の文字を挿入したい

    VBA でセルの文字列に"-"等の文字を挿入したい エクセルでA列に品番がずらっと並んでいる状態です。 この品番がすべて"-"が抜けています。 頭から5文字目の後ろに"-"を挿入したいのですがどのようにすればよいでしょうか? 例 55548855→55548-55 また 55548-55→55548855 のように"-"を抜く方もわかれば教えてください。 よろしくお願いします。

  • Excel VBAで複数のExcelブックからある文字列を検索→抽出したものをまとめたい

    Excel VBAで以下の操作は可能でしょうか。 私はAccessVBAを少しさわる程度でExcel VBAはまったくわかりませんし、 まだ現物データを見ていないので説明不足ですが、 ご存知の方がいらっしゃいましたらどうぞご回答をお願いします。 コード等もあわせて教えて下さるととても助かります。 複数のExcelブックからある文字列を検索→抽出したものをまとめたい。 ・検索抽出したい文字列の入っているセル位置は固定。 ・抽出したデータを新たなファイルにするか、どうするかはまだ未定。 ・Excelブックは100個ほどある。

  • VBA初心者です。 非常に困っております。

    VBA初心者です。 非常に困っております。 Excel 2003を使用しております。VBAにて下記のリスト表があるとします。 2010/04/05 りんご 30円 2010/04/12 みかん 20円 2010/06/12 もも  15円 2010/05/21 ぶどう 20円 2010/05/09 みかん 20円 このデータをExcelシートに入力されている場合、VBAのコンボボックスを使用して、 4月・・5月といったリスト表にて5月のデータのみを抽出するにはどうすればよろしいでしょうか? オートフィルタみたいな感じで結構です。さらに抽出した5月分のデータの計算を求めればどうすれば良いでしょうか?→合計値は、任意のセルに入れば良いです。 すいませんが、分かる方、丁寧なご回答のほどよろしくお願いいたします。 

  • エクセルVBAで作成できますか(2)

    質問No.9506691に関連して添付ファイルのようなVBAを作成したい。 1:日付と時刻が同じセルで10分毎に合計を出すことはできますか。  それとも日付と時刻は別々のセルにして算出する方がいいのでしょうか。 2:抽出する項目は先に作成しておいた方がいいのでしょうか。  VBAで表示させることはできますか。 どなたかアドバイスお願いします。

  • VBAの書き方

    初歩的ですいません。 エクセルのVBAを利用してセル内に「"」を書き込むことは不可能なのでしょうか?? =if(A1="","","ok") と言う数式をVBAからセル内に書き込みたいのですがVBAで "" をプログラム上の文字として認識されてしまい書き込めません。 ご教授いただけないでしょうか??

  • VBA フィルターで抽出したデータを別のファイルの

    VBA フィルターで抽出したデータを別のファイルのシートのセルにヘッダー行とフッター行のあるシートに挿入したい お世話になります。 excel のフィルターで抽出したデータを別のファイルのシートに抽出したデータと同一フォーマットの入っている原紙がありその原紙をコピーしたシートのヘッダー行(A1-A8)の後、9行目からフッター行の手前、52行めまでに貼り付けするを、フィルターで抽出した分繰り返したいのです。原紙 のシートはコピペでしたに20枚ほど作ってあります。 マクロの記述でコピペを繰り返せば作れそうな気はしますが、汎用性が無いので、また私の頭も固いので。 宜しくお願いします。

  • excel vba 日付型の2つの値を一つのセルに入力する方法

    excel vbaについて教えてください。 Wという変数にDate型で"1:00"という数値が入っており、 Zという変数にDate型で"2:00"という数値が入っています。 この二つを、同じセル内に改行して挿入したいと思っています。 Cells(1, 1) = W & Chr(10) & Z 上記のようにセットしようとすると、 4.16666…7E-02 4.16666…7E-02 といったように値が変形してしまいます。 1:00、2:00という値は前処理で時刻の比較などをしているため、 文字列型にすることはできません。 どのようにしたら 1:00 2:00 といった形にできるでしょうか? 途中で(セルに挿入する直前で)文字列型に 変換する、というようなことはできるでのしょうか? よろしくお願いします。

  • エクセルVBAでフィルタ抽出部分のみのコピー

    エクセルVBAで売上帳を作成していますが、オートフィルタでデータ抽出した後、表示されている行のみをコピーして別シートに貼りつけるにはどうすればよいのでしょう? 別シートは指定したセルに値のみの貼り付けをしたいと思っています。 宜しくお願いします。

  • 【Excel VBA】並べ替え

    Excel2003を使用しています。 あるテキストファイルから必要なデータを抽出し、予めExcelで作成してある表に、抽出したデータをコピーするという作業をマクロで処理しています。 Excelの表は、A列→4桁の番号(数値)、C列→文字列、D列→数値で、A列の番号順(昇順)に表示されています。 抽出されたデータは、2行目以下に表示されるので、まず、A2セルに『0000』、C2セルとD2セルにそれぞれ該当のデータがコピーされ、以下、順番にコピーされます。このA2セル『0000』の行データをコピーされたデータの一番最後にもっていき、下記のように上方向へシフトさせたいのですが、このようなことはコードを追加することで可能でしょうか?    A列  C列  D列 2  0000  あ  100 3  1200  い  200 4  1500  う  300        ↓ 2  1200  い  200 3  1500  う  300 4  0000  あ  100 データ元のテキストファイルは、会社で使用しているシステムの機能を使って、テキストファイルにしたものです。このデータが昇順で表示されているので、こちらを並べ替えてマクロを実行すればいいかと思ったのですが、数値と文字列が混在しているので、Excelの表にコピーした後(数値と文字列の混在がなくなった後)に、上記のように並び替えることができればと思い、質問させていただきました。 よろしくお願いします。

専門家に質問してみよう