tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
Excelの関数の使用例及び入力済み範囲の取得・他(VB6.0 基本編) ( No.8 )  [親スレッドへ]
日時: 2013/07/21 07:45
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:シート数,シート名,追加・削除,シート名の一覧                         *
***********************************************************************************

元質問: Excelの関数の使い方について - 秋風  2002/11/12-11:16 No.1335

 Excelで、データを読み込ませた後、データ値のMIN値を出したいのですが、どのように範囲選択するのか分かりません。
 データ表は、
  A(MIN値)      B     C     D     E    F
1     4          4     5     8     9
2     3          3     5     9
3     1          7     1     6     4    3
のような感じでA列にMIN値をオートで入れたいのです。

データ値(列に入る)と行数が可変なものですから、Rangeの所で、":"がうまく使用できません。列に関しては、256まで全て選択で固定させようと思っています。

-----------------------------------------------------------------------------------
Re: Excelの関数の使い方について - A221  2002/11/12-11:59 No.1336  
-----------------------------------------------------------------------------------
Rangeの指定は文字列ではなかったかと。セルにまんま式を入れてしまう方法です。
#動作の確認はしていません。

Dim Col As Long
Dim Row As Long
Dim MinRange As String
'Rows=データの行数
For i=0 To Rows
    Col = lngkikakugyou - 1
    minrange = "B" & i & ":" & Code2Alphabet(Col) & i
    xlSheet.Cells(i, 1).Value = "=Min(" & minrange & ")"
Next i

Public Function Code2Alphabet(ByVal X As Long) As String
    Dim Lcode As String
    Dim Scode As String
    If (X \ 27) Then Lcode = Chr$(64 + ((X + (X \ 27)) \ 27))
    X = (X Mod 27) + (X \ 27)
    Scode = Chr$(64 + (X Mod 27))
    Code2Alphabet = Lcode + Scode
End Function

-----------------------------------------------------------------------------------
Excelの関数の使用例及び入力済み範囲の取得・他 - 花ちゃん  2007/08/09
-----------------------------------------------------------------------------------
'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
'Excel 操作部分(Excelの関数の使用例及び入力済み範囲の取得・他)
   'テスト用データの作成及び入力(Range オブジェクトを使ってのデータの入力例)
   Dim xlRange As Excel.Range
   Dim Dat(1 To 3, 1 To 6) As Variant
   Dat(1, 1) = 4: Dat(1, 2) = 4: Dat(1, 3) = 5: Dat(1, 4) = 8: Dat(1, 5) = 9: Dat(1, 6) = ""
   Dat(2, 1) = 3: Dat(2, 2) = 3: Dat(2, 3) = 5: Dat(2, 4) = 9: Dat(2, 5) = "": Dat(2, 6) = ""
   Dat(3, 1) = 1: Dat(3, 2) = 7: Dat(3, 3) = 1: Dat(3, 4) = 6: Dat(3, 5) = 4: Dat(3, 6) = 3
  
   'R1C1形式の数値で指定したアドレスをA1形式に変換する関数を使用
   Set xlRange = xlSheet.Range(ToA1Style(1, 1, 6, 3))    'データの入力セル範囲
   xlRange.Value = Dat                                   'セルへデータの入力
  
   'データの入力範囲の取得
   '指定のセル位置を含む空白行と空白列に囲まれた最小のセル範囲を取得
   'Activateなセル("A1")があるActivateセル領域を選択します。
   xlSheet.Range("A1").Activate
   xlApp.ActiveCell.CurrentRegion.Select
   '----------------------------------------------
   'Address プロパティでその範囲を A1 形式で取得。
   xlSheet.Cells(5, 1).Value = "セル A1 があるActivateセル領域は " & _
         xlApp.ActiveCell.CurrentRegion.Address(False, False, xlA1) & _
                  " の範囲です。"                                             'A1:F3
   '----------------------------------------------
   'xlSheet 上の使用済みのセル範囲を取得
   xlSheet.Cells(6, 1).Value = "使用済みセル領域は " & _
         xlSheet.UsedRange.Address(False, False, xlA1) & " です。"            'A1:F5

   '-----------------------------------------------
   'Excel の関数の使用例(Excel 標準の取得値と同じです)
  
   'データの個数を取得
   xlSheet.Cells(8, 1).Value = "個数"
   xlSheet.Cells(8, 2).Value = "=COUNT(" & ToA1Style(1, 1, 6, 3) & ")"        '15
   'データの最小値を取得
   xlSheet.Cells(9, 1).Value = "最小値"
   xlSheet.Cells(9, 2).Value = "=MIN(" & ToA1Style(1, 1, 6, 3) & ")"          '1
   'データの最大値を取得
   xlSheet.Cells(10, 1).Value = "最大値"
   xlSheet.Cells(10, 2).Value = "=MAX(" & ToA1Style(1, 1, 6, 3) & ")"         '9
  
   'データの合計を取得
   xlSheet.Cells(11, 1).Value = "合計"
   xlSheet.Cells(11, 2).Value = "=SUM(" & ToA1Style(1, 1, 6, 3) & ")"         '72
   'データの平均値を取得
   xlSheet.Cells(12, 1).Value = "平均"
   xlSheet.Cells(12, 2).Value = "=AVERAGE(" & ToA1Style(1, 1, 6, 3) & ")"     '4.8   72÷15
  
'☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

'セルのアドレスの形式をA1形式に変換する関数
Private Function ToA1Style(ByVal C1 As Integer, ByVal R1 As Integer, _
                        ByVal C2 As Integer, ByVal R2 As Integer)
   Dim i As Integer, A1 As String, A2 As String
   i = Int((C1 - 1) / 26)
   A1 = IIf(C1 > 26, Chr$(64 + i), "")
   i = C1 - 26 * i
   A1 = A1 & Chr$(64 + i)
  
   i = Int((C2 - 1) / 26)
   A2 = IIf(C2 > 26, Chr$(64 + i), "")
   i = C2 - 26 * i
   A2 = A2 & Chr$(64 + i)
   ToA1Style = A1 & R1 & ":" & A2 & R2
End Function


------------------------------------------------------------
 上記の実行結果
 http://hanatyan.sakura.ne.jp/samplepic/excel-8-1.gif

注意
-----------------------------------------------------------------------------------
上記のセルのアドレスの形式をA1形式に変換する関数は、Excel 2007 では、703列目以降の
列で、正しい値が返らないようです。
(普通は、700列以上のセルを使用する事は無いと思いますが)
その場合は、下記のリンクの魔界の仮面弁士さん作の関数を使わせて頂いて下さい。
 http://yaplog.jp/orator/archive/77



 [スレッド一覧へ] [親スレッドへ]