• ベストアンサー

条件に一致する行のみを選択し・・・

全ての行のうち、C列にNote_on_cを含んでおり、かつI列が整数の行のみを選択し、それぞれの行のF列の数値を一括で加算/原産する方法はありますか? 例えば図の場合、15と20が整数かつNote_on_cという文字が入っているので、これらのF列の数値を一括で、+5したいのですが、どうすればよいのでしょうか。

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

  • ベストアンサー
回答No.2

J1 =f1+5*(c1="Note_on_c")*(mod(i1,1)=0) 実は質問文の条件の他に、I 列が正の場合だけ加算という条件もあったという場合は、代わりに次式。 J1 =f1+5*(c1="Note_on_c")*(mod(i1,1)=0)*(i1>0)

tukutukuhosi
質問者

お礼

非常にシンプルでカスタマイズ性が高く素晴らしいですね。ありがとうございます。

その他の回答 (3)

noname#192382
noname#192382
回答No.4

No1回答を手直しさせてください。次のマクロすべてをコピー貼り付けして、マクロ5だけ実行してください。なおデータ数に応じたプログラム修正は前回の説明どおりにしてください。 Sub Macro2() ' ' Macro2 Macro ' マクロ記録日 : 2013/8/10 ユーザー名 : ' Dim i As Integer, sa As Variant, wa As Variant For i = 2 To 10 sa = Int(Worksheets(2).Cells(i, 9)) - Worksheets(2).Cells(i, 9) If sa = 0 Then Worksheets(3).Cells(i, 9) = Worksheets(2).Cells(i, 9) Else 'MsgBox sa End If Next ' End Sub Sub Macro3() ' ' Macro3 Macro ' マクロ記録日 : 2013/8/10 ユーザー名 : ' ' Dim i As Integer, sa As Variant, wa As Variant Worksheets(3).Activate wa = 0 For i = 2 To 10 wa = wa + Cells(i, 9) Next Cells(12, 9) = wa End Sub Sub Macro4() ' ' Macro4 Macro ' マクロ記録日 : 2013/8/10 ユーザー名 : ' ' Range("A2:I10").Select Selection.Copy Sheets("Sheet2").Select Range("A2").Select ActiveSheet.Paste End Sub Option Explicit Sub Macro5() ' ' Macro5 Macro ' マクロ記録日 : 2013/8/11 ユーザー名 : ' Macro6 Macro4 Macro2 Macro3 End Sub Sub Macro6() ' ' Macro6 Macro ' マクロ記録日 : 2013/8/11 ユーザー名 : ' ' Range("C1").Select Selection.AutoFilter Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="Note_on_c" End Sub

tukutukuhosi
質問者

お礼

ご回答ありがとございます。ペースト用に作って頂き大変助かります。

noname#204879
noname#204879
回答No.3

1.上端行(1行目)に新しい1行を追加して、左端セルから右へ   項目名 FLD1、FLD2、FLD3、…、FLD9 を入力 2.セル J1 に数値 5 を入力 3.下に記した各セルに、その右に示した式を入力    K2: =FIND("Note_on_c",C2)>0    L2: =MOD(I2,1)=0    M2: =I2>0   なお、範囲 K1:M1 は必ず空白のままにしておく 添付図 Fig-1 に以上の状態を示した。 4.範囲 A1:I21 を選択して、次の[フィルタオプションの設定]を実行    [抽出先]:   “選択範囲内”    [リスト範囲]:  $A$1:$J$21    [検索条件範囲]: $K$1:$M$2 その結果を添付図 Fig-2 に示した。 5.セル J5 を選択して[コピー]を実行 6.ステップ4で抽出されたF列のデータ(Fig-2 の項目名 FLD6 より   下方の2個のデータ)を選択 7.[編集]→[ジャンプ]→[セル選択]を実行 8.“可視セル”に目玉を入れて Enterキーを「エイヤッ!」と叩き付け 9.[編集]→[形式を選択して貼り付け]を実行 10.“加算”に目玉を入れて Enterキーを「エイヤッ!」と叩き付け 11.[データ]→[フィルタ]→[すべて表示]を実行

tukutukuhosi
質問者

お礼

御回答有り難うございます。エイヤーですか笑 確かに最終工程のエンターは気合はいりますね笑 MODの使い方に関しても、新しく知ることができ、ありがとございます。

noname#192382
noname#192382
回答No.1

つぎの4つのマクロをまくろ1、まくろ4、マクロ2、マクロ3の順に実行するとシート3に合計が計算されます。 データすうが仮に10としてマクロを作っています。データ数がこれをオーバーするときは、マクロ2,3,4のなかの10というところをそれぞれ修正してください。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2013/8/10 ユーザー名 : ' ' Worksheets(1).Activate Columns("C:C").Select Selection.AutoFilter Columns("C:C").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="Note_on_c" End Sub Sub Macro2() ' ' Macro2 Macro ' マクロ記録日 : 2013/8/10 ユーザー名 : ' Dim i As Integer, sa As Variant, wa As Variant For i = 2 To 10 sa = Int(Worksheets(2).Cells(i, 9)) - Worksheets(2).Cells(i, 9) If sa = 0 Then Worksheets(3).Cells(i, 9) = Worksheets(2).Cells(i, 9) Else 'MsgBox sa End If Next ' End Sub Sub Macro3() ' ' Macro3 Macro ' マクロ記録日 : 2013/8/10 ユーザー名 : ' ' Dim i As Integer, sa As Variant, wa As Variant Worksheets(3).Activate wa = 0 For i = 2 To 10 wa = wa + Cells(i, 9) Next Cells(12, 9) = wa End Sub Sub Macro4() ' ' Macro4 Macro ' マクロ記録日 : 2013/8/10 ユーザー名 : ' ' Range("A2:I10").Select Selection.Copy Sheets("Sheet2").Select Range("A2").Select ActiveSheet.Paste End Sub

関連するQ&A

専門家に質問してみよう