A 回答 (13件中1~10件)
- 最新から表示
- 回答順に表示
No.13
- 回答日時:
>同じような表で、B列とC列に数字があり、B列とC列の合計を結合セルのD列に表示させたい場合は、どのようなマクロになるのでしょうか。
一応、マクロも作ってみました。
念の為に、A列やD列に結合されたセルが最初から存在していて、マクロで処理を行った前後で、結合されているセル範囲が変わってしまう様な場合であっても、「結合されていないセル」の水平方向の罫線が消えてしまう事のない様にしております。(そのために行う前処理の部分が、マクロの記述の半分以上を占めてしまう事になってしまいました)
但し、もしも、「A列~C列の列範囲において、空欄ではないセルが存在している行の中の最下段の行」よりも下の行に、結合されているセルが存在していた場合には、その結合されているセルの結合は解除されません。(結合セルの中の一部の行が、「A列~C列の中の空欄ではない最下段の行」と同じかそれよりも上に位置しているものに関しては、結合の解除と、水平罫線の復活は行われます)
又、「結合されているセルが存在しているのはA列とD列だけである」という想定の下でマクロを組んでおりますので、A列とB列にまたがって存在している結合セルやC列とD列にまたがって存在している結合セルが存在していた場合には、結合は解除されますが、垂直方向の罫線や、B列とC列の罫線は復活しません。
Sub Macro0()
Dim lr As Long
Dim tr As Long
Dim br As Long
Dim c As String
Dim b As Variant
lr = 0
If Application.WorksheetFunction.CountIf(Range("A2:A" & Rows.Count), "*?") Then _
lr = Application.WorksheetFunction.Match(Chr(1), Columns("A:A"), -1)
If Application.WorksheetFunction.Count(Range("A2:A" & Rows.Count)) Then _
If lr < Application.WorksheetFunction.Match(9E+307, Columns("A:A")) Then _
lr = Application.WorksheetFunction.Match(9E+307, Columns("A:A"))
If lr = 0 Then Exit Sub
If Application.WorksheetFunction.Count(Range("B2:B" & Rows.Count)) Then _
If lr < Application.WorksheetFunction.Match(9E+307, Columns("B:B")) Then _
lr = Application.WorksheetFunction.Match(9E+307, Columns("B:B"))
If Application.WorksheetFunction.Count(Range("C2:C" & Rows.Count)) Then _
If lr < Application.WorksheetFunction.Match(9E+307, Columns("C:C")) Then _
lr = Application.WorksheetFunction.Match(9E+307, Columns("C:C"))
If lr = 0 Then Exit Sub
c = ""
Do
If c = "A" Then c = "D"
If c = "" Then c = "A"
Range(c & "2:" & c & lr).Select
Selection.HorizontalAlignment = xlGeneral
Selection.VerticalAlignment = xlCenter
Set b = Selection.Borders(xlEdgeBottom)
Selection.UnMerge
With Selection.Borders(xlInsideHorizontal)
.LineStyle = b.LineStyle
.ColorIndex = b.ColorIndex
.Weight = b.Weight
End With
Loop Until c = "D"
Range("D2:D" & Rows.Count).ClearContents
'ここまでが前処理
br = Range("A1").Row
Do
tr = br + 1
If Application.WorksheetFunction.CountIf(Range("A" & tr + 1 & ":A" & lr + 1), "*?") + _
Application.WorksheetFunction.Count(Range("A" & tr + 1 & ":A" & lr + 1)) Then
Do
br = br + 1
Loop While Range("A" & br + 1).Value = ""
Else
br = lr
End If
If br > tr Then
Application.DisplayAlerts = False
Range("A" & tr & ":A" & br).Merge
Range("D" & tr & ":D" & br).Merge
Application.DisplayAlerts = True
End If
Range("D" & tr).Value = Application.WorksheetFunction.Sum(Range("B" & tr & ":C" & br))
Loop Until br = lr
Range("A1").Select
End Sub
No.12
- 回答日時:
>数式を下方向にコピーする方法はありませんか?
数式を入力するセルが大きさの異なる結合セルですから、通常のコピー貼り付けはできません。
そこで、特殊な方法となる「数式」でのコピー貼り付けの方法を提示しました。
私の提示した方法で、すべてのセルにまとめてご希望の表示ができると思うのですが・・・・
ちなみに、B列とC列の2つの列の集計なら数式を以下のように変更してください。
=SUM(OFFSET($B2,0,0,MIN(INDEX(($A3:$A11="")*10000+ROW($A3:$A11),))-ROW($A2),2))
No.10
- 回答日時:
No.3です!
補足の件について・・・
↓の画像のような感じでよいのでしょうか?
そうであればコードを以下に変更してみてください。
Sub 合計2() 'この行から
Dim i As Long, k As Long, endRow As Long
endRow = Cells(Rows.Count, "B").End(xlUp).Row
Application.ScreenUpdating = False
Range("A:A").UnMerge
For i = 2 To endRow
If Cells(i, "A") = "" Then
Cells(i, "A") = Cells(i - 1, "A")
End If
Next i
For i = 2 To endRow
'↓ココを変更
Cells(i, "D") = WorksheetFunction.SumIf(Range("A:A"), Cells(i, "A"), Range("B:B")) _
+ WorksheetFunction.SumIf(Range("A:A"), Cells(i, "A"), Range("C:C"))
'↑ここまで変更
Next i
Application.DisplayAlerts = False
For i = 2 To endRow
If Cells(i, "A") = Cells(i - 1, "A") Then
k = i
Do While Cells(k, "A") = Cells(i, "A")
k = k + 1
Loop
Range(Cells(i - 1, "A"), Cells(k - 1, "A")).Merge
i = k
End If
Next i
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub 'この行まで
これではどうでしょうか?m(_ _)m
No.9
- 回答日時:
>同じような表で、B列とC列に数字があり、B列とC列の合計を結合セルのD列に表示させたい場合は、どのようなマクロになるのでしょうか。
回答No.7はマクロによる方法ではなく、関数を使った方法なのですが、マクロによる方法でなければ駄目なのでしょうか?
もし、関数を使った補法でも宜しければ、回答No.6の方法を少し変更した次の様な関数をD列に入力されると良いと思います。
=IF(INDEX($A:$A,ROW())="","",SUM(INDEX($B:$B,ROW()):INDEX($C:$C,IF(COUNTIF(INDEX($A:$A,ROW()+1):INDEX($A:$A,ROWS($A:$A)),"*?"),MATCH("*?",INDEX($A:$A,ROW()+1):INDEX($A:$A,ROWS($A:$A)),0)-1+ROW(),ROWS($A:$A)))))
No.8
- 回答日時:
>「#NAME?」と表示されてしまいます。
>何か操作を間違えているのでしょうか。
えぇ、やり方を間違えているのが原因です。
当たり前の対処だと思いますが、もう一度「回答をよく読みながら、書かれてる通りに行ってください」。
No.7
- 回答日時:
もし、下の添付画像の様にB列の最後の行に合計値が表示されていて、A列の最後の行に「合計」と表示されている場合や、B列には合計値が表示される様になっていない場合には、次の様な関数を使ってもA列/C列が結合されている範囲内の合計を求める事が出来ます。
=IF(INDEX($A:$A,ROW())="","",SUM(INDEX($B:$B,ROW()):INDEX($B:$B,ROWS(C:C)))-SUM(INDEX(C:C,ROW()+1):INDEX(C:C,ROWS(C:C)))-SUMIF($A:$A,"合計",$B:$B))
但し、この関数は、表のA列において最後の区分の名称が入力されている行の所まで、コピーしておく事で初めて正しい値を表示する事が出来ます。
この回答への補足
同じような表で、B列とC列に数字があり、B列とC列の合計を結合セルのD列に表示させたい場合は、どのようなマクロになるのでしょうか。
補足日時:2013/12/05 09:02No.6
- 回答日時:
A列に入力されている区分が必ず文字列データである場合には、次の様な関数となります。
=IF(INDEX($A:$A,ROW())="","",SUM(INDEX($B:$B,ROW()):INDEX($B:$B,IF(COUNTIF(INDEX($A:$A,ROW()+1):INDEX($A:$A,ROWS($A:$A)),"*?"),MATCH("*?",INDEX($A:$A,ROW()+1):INDEX($A:$A,ROWS($A:$A)),0)-1+ROW(),ROWS($A:$A)))))
No.5
- 回答日時:
例示のレイアウトなら、空白列の2行目に以下の式を入力し、このセルを選択して右クリック「コピー」、C2セル以下の結合セル範囲を選択して、右クリック「形式を選択して貼り付け」で「数式」にしてください(結合セルが最大10行までの数式です)。
=SUM(OFFSET($B2,0,0,MIN(INDEX(($A3:$A11="")*10000+ROW($A3:$A11),))-ROW($A2),1))
No.4
- 回答日時:
ALT+F11を押す
現れた画面で挿入メニューから標準モジュールを挿入する
現れたシートに下記をコピー貼り付ける
public function sumleft() as variant
application.volatile
with application.caller.mergearea
sumleft = application.sum(.offset(0, -1).resize(.rows.count, 1))
end with
end function
ファイルメニューから終了してエクセルに戻る
C列の各セルに
=sumleft()
と,この通りに記入する。
C列のセルは勿論,「結合されていなくても」計算できます。A列は見てないので,必要なC列セルを漏れなく結合して計算します。
#言わずもがなですが,C列の各セルは「異なるサイズのセル結合」されているため,下向けに数式をコピーして記入するふつーの使い方はできません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
誕生日にもらった意外なもの
みなさんがもらった誕生日プレゼントで面白いものがあったらぜひ教えてください!
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
セルを結合した時のエクセル集計について
Excel(エクセル)
-
結合したセルを一つのセルとして認識できないのでしょうか?
Excel(エクセル)
-
セルを結合した場合の関数(COUNTIF)の使い方
Excel(エクセル)
-
-
4
Excel2010 sumifs関数で、結合セルの「0」と認識される個所を参照する方法を教えて下さい
Excel(エクセル)
-
5
Excelで項目ごとの単一セルと結合セルとが混ざっている数値の合計の出し方を教えて下さい。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数の文字列のいずれかが含ま...
-
Excelの入力規則で2列表示したい
-
SUMに含まれる範囲から特定のセ...
-
Excel上でのデータ数字が連番で...
-
列の数字に100をかけたい
-
スペースとスペースの間の文字...
-
数式が入ったセルを含めて、数...
-
エクセルで合計欄を結合し、左...
-
エクセル:横長の表を改行して...
-
エクセルで小数を含む数値の抽出
-
Excelのセル内文字の並び替えに...
-
別のセルに値が入力されたら、...
-
エクセルで1列全部10倍したい
-
エクセルで表示されている数字...
-
入退社日より各月末の在籍者数...
-
エクセルの複数のセル均等に分...
-
エクセルで曜日に応じた文字を...
-
エクセルでセルの値分の個数の...
-
Excelでの検索結果を含む行だけ...
-
【EXCEL】指定したセルの値を他...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数の文字列のいずれかが含ま...
-
Excelの入力規則で2列表示したい
-
数式が入ったセルを含めて、数...
-
SUMに含まれる範囲から特定のセ...
-
Excel上でのデータ数字が連番で...
-
列の数字に100をかけたい
-
スペースとスペースの間の文字...
-
エクセル:横長の表を改行して...
-
エクセルで表示されている数字...
-
エクセルでセルの値分の個数の...
-
エクセルで1列全部10倍したい
-
別のセルに値が入力されたら、...
-
HYPERLINKとADDRESSとMATCHの組...
-
エクセルで、毎日の走行距離(...
-
Excelのセル内文字の並び替えに...
-
エクセル セル内の文字数を超え...
-
エクセルのsumifでかけ算してか...
-
エクセルで小数を含む数値の抽出
-
時間を「昼間」と「夜間」に分...
-
EXCELの特定セルを編集不可・コ...
おすすめ情報