• ベストアンサー

Excel 特定の文字を検索して計算 VBA

急ぎで困っております。 エクセル2010にて、表を小計をさせた文字や特定の文字を検索して、別セルに計算式を参照させ表示するマクロを考えております。 表の内容は都度、変更になり小計をかけます。 画像添付しております。 ご教示のほどよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2015
  • ベストアンサー率49% (258/524)
回答No.7

ANo.5です。 > 実際はG列のG13、G14、G15、G16のセルの値をB列の"みかん集計"の文字を検索して、すべて足し算してG17に入力したいと思います。 Case "みかん 集計◆"の下のコードを以下の様に変更してみてください。 Cells(nRow, 7) = Cells(nRow, 4) ↓ Cells(nRow, 7) = Application.WorksheetFunction.SumIf(Range("B:B"), "みかん", Range("G:G")) なお、当方のコードは考え方のサンプル程度の内容ですので実際に使用する際にはエラー処理なども考慮してください。

その他の回答 (6)

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.6

訂正(^^; コードの7行目 誤:Cells(nRow, 7) = Cells(nRow, 5) / 10 ↓ 正:Cells(nRow, 7) = Cells(nRow, 4) / 10

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.5

こういう事なのかな? B列とC列の文字列を◆でつなげた文字列を作り、Select Caseでパターン別けしてみました。 もし、◆を表で使用している場合は別な文字を使用してください。 みかん集計についてはG列に表示するのはD列の値にしました。 Sub Sample()   For nRow = 3 To Cells(Rows.Count, "B").End(xlUp).Row     sSTring = Cells(nRow, 2) & "◆" & Cells(nRow, 3)     Select Case sSTring       Case "りんご 集計◆"         Cells(nRow, 6) = Cells(nRow, 4) * 10         Cells(nRow, 7) = Cells(nRow, 5) / 10                Case "メロン◆メロン200円"         Cells(nRow, 6) = Cells(nRow, 4)                Case "みかん 集計◆"         Cells(nRow, 7) = Cells(nRow, 4)          End Select   Next nRow End Sub

nezumisansan
質問者

補足

mt2015さん、早速にありがとうございます。 概ねやりたい事は出来ております。 G17の、G13+G14+G15+G16 は、D17に既に結果が出ていますが、サンプル表が間違えておりますので処理は別で考えたいと思っております。 実際はG列のG13、G14、G15、G16のセルの値をB列の"みかん集計"の文字を検索して、すべて足し算してG17に入力したいと思います。 SUBTOTALのような感じです。 集計した結果表示される、"○○集計"の場所は毎回異なるため、VBAでお願い出来れば助かります。 ご確認よろしくお願いします。

回答No.4

これはアレかなぁ? セルの塗りつぶし色によって集計方法を変えたいってことかなぁ? そのあたりの条件やら何やらがわからないと式もマクロも組みようがないですよ? 実際問題、恐らく中身はそんなに難しくないマクロでしょうが・・ それが都度変わるのであればマクロは却って面倒かもしれません。 マクロ以前に、ご自身がやりたいことや条件を明確に補足するなり、 質問しなおすなりなさってくださいませ。

nezumisansan
質問者

補足

tsubu-yuki 様、ありがとうございます。 マクロで考えております。 imogasi 様の補足で記述させて頂いております。 わかりにくく、恐れ入ります。

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.3

こんにちは セルF4に、=IF(ISERROR(FIND("集計",$B4,1)),$D4,$D4*10) セルG4に、=IF(ISERROR(FIND("集計",$B4,1)),"",$D4/100) で、F4:G4を下方にフィルコピーでしょうか? G17の、G13+G14+G15+G16 は、D17に既に結果が出てますよね?

nezumisansan
質問者

補足

ushi2015 様、ありがとうございます。 VBAで考えております。 imogasi 様の補足で記述させて頂いております。 わかりにくく、恐れ入ります。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

#1の回答(問い合わせ)の補足を見てもよく意味が分からない。 ーー 列は行の誤りでは?初心者によくある間違いだが? こういうレベルと質問文章の書きぶりで、でVBAをやるの? ーー 「集計」という文字があるセルを、このシートの中で探し(B,C列限定?)、その右列(D列?)の式を別シートにでも出したいのか。 ーー エクセルでシートに計算式を表示させる機能がるのを知っているか? それをつかってはダメ? ーー 質問のことが実現したとして、目的は何(どう使うのか)? これを書けば、質問の狙いを、読者は理解しやすいと思う。

nezumisansan
質問者

補足

imogasi 様 ご指摘ありがとうございます。 毎回集計の内容は変更となりますので、VBAで考えております。 りんご 集計はB列を検索して下記コードで動きますが、 C列を検索してのメロン200円の処理と B列とD列を参照してのみかん集計の処理をご教示頂けると助かります。 よろしくお願い致します。 Sub セルの値を検索して計算() Dim myRng As Range, c As Range, fAd As String, i As Long Dim myStr Set myRng = Range("B3", Cells(Rows.Count, "B").End(xlUp)) 'B列の検索範囲設定 For Each myStr In Array("りんご 集計") Set c = myRng.Find(What:=myStr, LookAt:=xlPart, After:=myRng.Cells(myRng.Count)) '部分一致検索 If Not c Is Nothing Then fAd = c.Address Do i = i + 1 c.Offset(0, 4).Value = c.Offset(0, 2) * 10 c.Offset(0, 5).Value = c.Offset(0, 2) / 10 Set c = myRng.FindNext(c) Loop Until c.Address = fAd End If Next myStr If i = 0 Then MsgBox "文字が見つかりません", vbCritical, "対象の列を確認してください。" Else End If Set myRng = Nothing Set c = Nothing End Sub

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんにちは 画像のどの部分の話ですか? D7*10 とか D7/100 とかG13+G14+G15+G16 という計算式を表示するという事ですか?

nezumisansan
質問者

補足

ushi2015 様、 早速にありがとうございます。 画像の計算式1・2列のセル場所に、B列の○○集計や、C列のメロン200円などの文字を照合させて、数式の結果をそれぞれのセルに表示させたいと考えております。ご確認よろしくお願いします。

関連するQ&A

  • エクセルマクロで検索

    エクセル初心者です。 エクセルで表を作ったのですがその中の計算式で月が変わるたびに参照するワークシートが変わるのでマクロの検索をつかいたいと考えています。 表の横に検索するワークシート名と置き換えするワークシート名をいれるセルをつくりマクロを組んで実行すると置き換えが完了するというようなマクロはできませんか?セル自体を検索置き換えはできるのですがセルの中の文字を指定の仕方がわかりません。 説明がヘタなのでわかりにくいかと思いますがよろしくおねがいします。

  • エクセルのマクロで特定の文字があるときだけコピーできるようにしたい

    エクセルのマクロで特定の文字があるときだけコピーできるようにしたい エクセルでこういう表があるとします ココカラ 1 * 2 b 15 3 * 4 d 19 5 e 25 6 * 7 g 35 8 * 9 j 46 10 k 54 ココマデ このような表があるとき、マクロを使ってもしB列に「*」以外の文字(この場合アルファベットのb) があるときは左のセル(2)をずっと下のセルにコピー(仮にA50とします)した後、右のセル(15)をB51にコピー、 次は文字が「*」なのでコピーはせずにd列になったら4と19をC50,D51にコピー・・・ という作業をセルに「ココマデ」と書いているところまで繰り返す、というマクロを作りたいのですが、どうすれば いいのでしょうか?

  • エクセル2013 計算から特定の文字を除外したい

    初心者です。 表中の列や行を+計算して合計を求める場合です。 交通費を求めているので、欠席の場合はそのセルに 金額の数字を入れずに 欠席 と記入しています。高速代、当番等も記入する時があります。 ランダムにセルに文字が入ってくる事になるので、数式からこの特定の文字だけを計算から除外する計算式を作ることはできないでしょうか? わかりにくい説明かと思いますが、よろしくお願いします。

  • Excel で特定の文字を取り出してその文字だけをコピーする方法

    VBAや関数に詳しくないので、というよりもExcelにあまり詳しくないので、とりあえずこうすればできるという方法を具体的に教えていただければと思います。 やりたいことは2つあります。内容はそれぞれこんな感じです。 (1) セルA1に”・・・・・・・○”  (・は任意の文字とします。)   セルA2に”・・・・・・・×”  (抽出したい文字は最後に来ます。) とあったとしたら セルB1に”○” セルB2に”×” というふうに特定の文字をコピーする。 それらの文字が含まれていなかったり、あってもそれが最後でなければ何もしません。 (2) (1)で作ったシートを他のシートにコピーしたとして、そのシートには列2に特定の文字○、×などが入っています(空欄の場合もあります。)。この中から列2の内容が×の行を削除します。 Officeについては詳しくありませんが C、C++やJavaなどは使っていたのでスクリプトについては読んでいるうちに慣れると思うのですが、肝心のExcelを使いこなしていないのでこれをマクロで保存した方がいいのか関数にしたほうがいいのかということもはっきりしていないレベルですのでその辺も交えて教えていただけるとありがたいです。 本来であれば自分である程度の勉強をしなければいけないのはわかっているのですが、急ぎということでよろしくお願いします。

  • データを入力すると特定の文字等を返す方法について

    いつも相談に答えていただきありがとうございます。 今回は、 エクセルで、特定のセルに数字を入力をした場合、同じシートの別のセルに文字等を返す方法についてご教示ください。 例) sheet1の「A1セル」に日付を入力すると「B1セル」に文字を返しその「Bセル」に色をつける。       「2/17」     →      「○」を付けそのセルの色を「赤」にする。 エクセルのマクロ処理ではなく、簡単な計算式で対応できないでしょうか。 もし、セルに色を付けるのが困難な場合は「○」表示だけでも付けたいと考えています。宜しくご教示ほどお願いします。

  • エクセルの計算式の答えを文字列にできますか?

    エクセルに詳しい方に質問です。 エクセルの計算式(LOOKUP)の答えとして、"A"と表示されているセルがあるとします。 当然参照するデータを"A"から"B"変更すると 計算式の入っているセルも"B"と変わるのですが、、、 これが変わらない様にする、つまり"A"というのを計算式の答えではなく文字にすることはできるのでしょうか? 手打ちで変更するには量が多いもので。。。 よい方法をご存知の方、アドバイスお願い致します。

  • エクセルファイルをHTML化した後の特定領域の文字列抽出

    エクセルファイルをHTML化した後の特定領域の文字列抽出 1.したい事  HTMLで作った表の中から特定の場所の文字列を抽出し,クリックでその画像が出てくるようにしたい.  OSはWinXP(pro)エクセルは2003です. 2.説明  4000程のjpeg画像ファイルがあるフォルダから,ネット上で配布されていましたエクセルマクロで  ファイル名を抽出しリストを作り,それをHTML化しました.エクセル上のB列に画像ファイル名が  抽出されているわけですが,当然のことながらHTML化した時点でセルの情報は失われています.  ファイル名は変えずに(拡張子はすべてjpg),HTML構文中でその文字列をクリックするとその画像  が出てくるようにしたいと考えています(ファイル名以外の列が出来ても構いません). 3.教えていただきたい事  1)HTMLの表の書式から特定の場所(エクセルでいうセルにあたる)の文字列を抽出できる方法が    あるかどうかご教示ください.  2)私が考えている方法以外にあるフォルダから千を上まわるファイル名を抽出,リスト化し    目的を達成出来る方法があるかどうかご教示ください.   

  • エクセルで文字を検索して数値を置き換える方法

    エクセル2013で2つの表の文字が合致した場合、特定の数値を検索して表示する方法を教えてください。 具体的には画像を添付しますのでよろしくお願いします。

  • EXCELで特定文字を検索後セル移動、文字入力

    お世話になります。 エクセルで、特定文字を検索し、その4つ右のセルに特定文字を入力する マクロを教えていただけませんでしょうか? A A B B ↓ A□□□文字A A□□□文字A A□□□文字B A□□□文字B □は空セル なお、文字は複数あり、その複数文字に対して別文字になります。 おわかりの方よろしくお願いします。

  • 特定の列が再計算された時に実行するマクロ

    excelで、特定の列に計算式(SUM)が入っています。 その列が再計算され、結果が1より大きくなったら、そのセルと同じ行の、他の列の値を変更するマクロを作りたいと思っております。 Worksheet_Calculateだと、再計算されたセルを特定できないと伺いました。 なので、再計算されたセルと同じ行で、他の列の値を変更することができません。 Worksheet_Changeだと計算式による変化は扱えないようなので・・・。 このような場合、どうすればいいか教えていただけないでしょうか。 よろしくお願いいたします。

専門家に質問してみよう