No.2ベストアンサー
- 回答日時:
こんな感じかな?
数値に小数が含まれるかどうか判らなかったのでDouble型にしてあります。
また、文字列等数値変換できないものが混じっていた場合(例:1,A,2)は、それを除いて合計しています。
Function Sample(aRange As Range) As Double
Dim vData, i
vData = Split(aRange.Value, ",")
For i = 0 To UBound(vData)
If IsNumeric(vData(i)) Then
Sample = Sample + CDbl(vData(i))
End If
Next i
End Function
No.3
- 回答日時:
標準モジュールにコピーしてご利用ください。
使い方:
ユーザー設定内の変数値をご自由に変更してご利用ください
※基本的にロジック部は触らなくても動くと思います。
※エラー処理は行っておりません。
※ユーザー設定の変数を引数とすれば関数にも利用可能です。
'---------- コピー(ここから)-----------------------------------------
Option Explicit
'====================================================================
' カンマ区切りのデータの合計値を算出する
'====================================================================
Public Sub calValues()
'変数宣言
Dim intTargetColNo As Long 'カンマ区切りデータ格納列No
Dim strData() As String 'カンマ区切りデータ格納用配列
Dim lngAnswer As Long 'カンマ区切りデータの合計値一次保存用
Dim i, j As Long 'For文用ループカウンタ
Dim lngWriteRowNo As Long '計算を開始する&合計値を書き込む行No
Dim lngEndRowNo As Long 'カンマ区切りデータの最終行No
Dim intWriteColNo As Integer '合計値を書き込む列No
Dim strSheetName As String '処理するシート名
'---------- ユーザー設定<始まり> ---------
'カンマ区切りのデータがある列No A列=1,B列=2・・・
intTargetColNo = 1
'合計値を書き込む列No A列=1,B列=2・・・
intWriteColNo = 2
'計算を開始する行No ヘッダーが有る場合=2, 無い場合=1
lngWriteRowNo = 1
'処理するシートの名前 ""で括って
strSheetName = "Sheet1"
'---------- ユーザー設定<終わり> ---------
'---------- ロジック部<始まり> -----------
'カンマ区切りデータの最終行を取得
lngEndRowNo = Worksheets(strSheetName).Cells(intTargetColNo, 1).End(xlDown).Row
'合計値の算出と書込み
For i = lngWriteRowNo To lngEndRowNo
'カンマ区切りデータを配列に格納
strData() = Split(Worksheets(strSheetName).Cells(i, intTargetColNo), _
",", , vbTextCompare)
'合計値の初期化
lngAnswer = 0
'合計値の算出
For j = LBound(strData) To UBound(strData)
lngAnswer = lngAnswer + CLng(strData(j))
Next j
'合計値を書き込む
Worksheets(strSheetName).Cells(lngWriteRowNo, intWriteColNo) = lngAnswer
'次の行へ移動
lngWriteRowNo = lngWriteRowNo + 1
Next i
'---------- ロジック部<終わり> -----------
End Sub
'---------- コピー(ここまで)-----------------------------------------
以上、ご参考までに・・・
No.1
- 回答日時:
function SumofCSV(strCSV) as long
dim a as variant
dim i as integer
SumofCSV = 0
a = split(strcst,",")
for i = 0 to ubound(a)-1
SumofCSV = SumofCSV + a(i)
next i
end function
見たいな感じ? 検証、エラー処理等をおこなってから使ってください。
有難うございます。
実は、自分も試しにつくってみたのですが、以下誤ったとこはありますでしょうか。
上の関数も試してみます。よろしくお願いします。
Function cellkei(myCell As String)
Dim myKei As Integer
Dim myBuf() As String
Dim i As Integer
myKei = 0
myBuf = Split(myCell, ",")
For i = 0 To UBound(myBuf)
myKei = myKei + myBuf(i)
Next i
cellkei = myKei
End Function
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 数字にカンマを入れる方法 2 2022/04/12 11:52
- その他(Microsoft Office) Excelで時間計算(負) 8 2023/02/26 05:47
- Java javaのCSVデータ読込についてです 6 2022/07/02 10:58
- Excel(エクセル) 指定した数字まで累計する方法や文字例の抽出について教えてください 4 2022/10/05 21:19
- Excel(エクセル) 至急です><Excelの関数を教えてください。 2 2022/03/22 17:56
- Excel(エクセル) VBA オリジナル関数で選択セルの合計を作成したい 3 2023/03/19 19:45
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
- Excel(エクセル) エクセル・セルに数式を入力してセル指定計算 2 2023/04/21 12:46
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
EXCELからCSVにすると余計なカ...
-
WORDで改ページすると時々グレ...
-
マクロを使ってフォルダー内に...
-
何故、日本は未だに数字を3桁...
-
VB2005のTextBoxでカン...
-
EXCELの文字が指数になる
-
[VBA][Excel]クリップボードか...
-
CSVの定義
-
区切り文字をTABにしたい
-
VBAでtxtファイルを読み込む際...
-
メールのcsv添付ファイルの種類...
-
データにカンマが入ったCSVデー...
-
数字が全角、コンマなし
-
カンマ区切りの数字をCSVフ...
-
エクセルの区切り位置の設定方法
-
エクセル:桁区切り「カンマ」...
-
C#で、テキストボックスの入力...
-
パス区切りの文字について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
何故、日本は未だに数字を3桁...
-
エクセルで数値を全角文字(カ...
-
EXCELからCSVにすると余計なカ...
-
マクロを使ってフォルダー内に...
-
カンマ区切りの数字をCSVフ...
-
桁区切りについて
-
CSVの定義
-
WORDで改ページすると時々グレ...
-
[VBA][Excel]クリップボードか...
-
データにカンマが入ったCSVデー...
-
カンマ区切り
-
3桁ごと?4桁ごと?コンマの...
-
VB2005のTextBoxでカン...
-
openoffice calcで#DIV/0! の...
-
ひとつの命令を複数行に記述
-
JPY ¥1,500.00は日本円でお幾ら?
-
パス区切りの文字について
-
VBAでtxtファイルを読み込む際...
-
C#で、テキストボックスの入力...
おすすめ情報