前置き 本当は邪道だと思うのですが・・・・。

Excelでとある見積書を部品ごとにシートを分けて作成しており、
そのシートは80シートにも及びます。
この見積書の合計部分のみを集めた、統括表の様なシートを別途作成
してその表に80シートの合計部分のみを自動参照(リンク)させて計算
したいのですが、計算式をコピーしてもセル参照は変わってもシート名だけは
変わってくれず、ひとつひとつシート名を手修正している次第です。
ファイルはたくさんあるのでこのままでは、日が暮れてしまいそうで
困り果てております。

シート名の部分をこのセルの値を参照するというように計算で求めることは
可能でしょうか?教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

=ADDRESS関数を使ってみてください.



=ADDRESS(1,1,4,1,A3)
パラメータについてはヘルプを参照してください.
    • good
    • 0
この回答へのお礼

教えていただいたセル参照の文字列を作成するADDRESS関数をヒントに
入力されているセル参照(文字)を使って間接的にセルを指定するINDIRECT
関数を使って何とか解決することができました。関数の勉強になりました。
どうもありがとうございました。

お礼日時:2002/01/17 16:11

こんにちは。



計算で求めるというと関数使用で、でしょうか??
シート名を取得する関数とかはなかったように思いますが、VBAマクロを使えば取得できます。

参考URL:http://www.moug.net/
    • good
    • 0
この回答へのお礼

すみません、ExcelVBAはあまり詳しくありませんので、
関数で解決したかったのですが・・・・。
教えていただいたアドレス確認してみました。
ここにもいろんな情報が載っていますね、
今後の参考にさせていただきます。どうもありがとうございました。

お礼日時:2002/01/17 16:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aと関連する良く見られている質問

Q見積書の合計金額を100円単位切り捨てるには・・・・・

どうか素人の私を助けてください。
Accessで見積書を作成いたしました。
が100円単位を切り捨てる方法がわかりません。
現在、見積合計として非連結フィールドにSum([金額])を計算させています。
その下の行に端数調整金額として100円単位を切り捨てる値引きを計上したいのです。
非連結の為出来れば関数で対処したく思います。
どうぞ宜しくお願いいたします。

Aベストアンサー

こんな方法はどうでしょうか?

=Sum([金額])-CLng(Right$(Format$(Sum([金額])), 2))

合計金額から、数値の右2桁の分だけ引きます。

まあ、他にもいろいろ方法があるとは思いますが、
参考にしてください。

Qアクセス フィールド名に変数を付け加えて参照する

OS:Win7Pro
使用ソフト:アクセス2010

ご質問させていただきます。
テーブルに以下のようなフィールドがあるとします。

[単価_1],[単価_2],[単価_3],[単価_4],[単価_5]

これらのフィールドのアンダーバー以下を変数を使用して参照することは可能でしょうか?
([単価_○]の○の部分を変数を使用して参照したいです。)


自分なりに以下のコードを作成したらダメでした。。

Dim cnt As Integer
cnt=1
with me
!単価_(cnt)
end with

ご存知の方がいましたらご教授いただけるとありがたいです。

Aベストアンサー

With Me
  Debug.Print .Controls("単価_" & cnt)
End With

とか。

Me("単価_" & cnt)
でも参照できます。

Qファイルメーカー8 参照元変更後の参照先自動変更

最近ファイルメーカーを使い始めました。

インターネットではあまり情報が見つからず、
「現場の必須テクニック」と「THE MISSING MANUAL」を読みながら
勉強しています。


参照させるには、ルックアップの設定、
参照元の値により、参照先の値を選ばせるにはスクリプト、
など、少しずつ理解しました。

ここまで来て、どうしても解らないことがあります。

フィールドの値につきまして、
エクセルのVLOOKUP()みたいに、参照元を変更したと同時に、
参照先を変更させるには、どのように設定したらよいでしょうか?

今まで勉強した知識では、参照先のリレーションのキーフィールドを、
レコードメニューから再ルックアップする、ということしか解りません。

参照元に変更があった場合、いちいち再ルックアップするのが面倒です。
再ルックアップするのを忘れてしまう可能性もあります。

また、この場合、参照先を変更したい値と、
変更したくない値が混在していた場合、全部変更されてしまいます。

リアルタイムで、参照先にも参照元の変更を反映させるやり方は無いのでしょうか?

最近ファイルメーカーを使い始めました。

インターネットではあまり情報が見つからず、
「現場の必須テクニック」と「THE MISSING MANUAL」を読みながら
勉強しています。


参照させるには、ルックアップの設定、
参照元の値により、参照先の値を選ばせるにはスクリプト、
など、少しずつ理解しました。

ここまで来て、どうしても解らないことがあります。

フィールドの値につきまして、
エクセルのVLOOKUP()みたいに、参照元を変更したと同時に、
参照先を変更させるには、どのように設定した...続きを読む

Aベストアンサー

下記、三つの用語をヘルプで探してください

1.関連フィールド
 リレーションにより参照元の値を別テーブルに表示できます
 (これがあなたの求めているものでしょう)
2.ポータル
 参照元が複数あって、複数表示したい場合
3.ルックアップ
 参照した時点の値を変更せずに保持したい場合

Qデータシート上の計算について

お世話になります。Access2002のフォームのデータシートでの計算についてご教授願います。
計算させる上での構成としましては、
1.マスターテーブルが存在し、そこにデータを格納する
2.マスターテーブルに格納するデータは別個に品目テーブルを参照して固有のIDのみをインプットさせてたい。
すなわち、品目テーブルの値(ID値、品目名、単価)が存在し、マスターテーブルに品目テーブルのIDのみを格納し、データシート上では個数を入力させると、自動的に計算させたいです。
<マスターテーブル>は、ID、M_ID、数量という構成をとり、品目テーブルは、M_ID、品目名、単価という構成をとり、M_IDでリレーションをとっています。
データシート上は、マスターテーブルのM_IDでコンボボックスをつくり、マスターテーブルのM_IDのコンボボックスは品目テーブルの品目と単価をデータで持っています。
データシート上での計算のしかたについてよろしくお願いいたします。
不明点がありましたら、補足いたします。

Aベストアンサー

当方はAccess2000ですけれども基本的な使い方は変わらないと思いますので、
微力ながらお力添え?させていただきます。

データシートに単価のテキストボックスと、数量のテキストボックスがあれば、
新しくテキストボックスを作成し、そのテキストボックスのコントロールソースを
=[単価]*[数量]
とすれば、簡単に金額の計算はできます。

もし、データシートに単価のテキストボックスと、数量のテキストボックスがなければ、データシートを再度作成し直したほうが早いかもしれません。
簡単な方法方法としては、以下の2つが考えられます。

(1)金額を計算するクエリを先に作成し、これを元にしてデータシートのフォームを作成。(計算を行うテキストボックスをフォームに新規に作成しなくても済みます。)
(2)フォームの作成ウイザードで、元になるテーブルの全ての項目(マスターテーブルも品目テーブルも)を選択し、データの表示は、byマスターテーブルとして作成する。こうすると作成されるデータフォームのレコードソースは
SELECT [マスタ―テーブル].[ID], [マスタ―テーブル].[M_ID], [品目テーブル].[品目名], [品目テーブル].[単価], [マスタ―テーブル].[数量] FROM 品目テーブル INNER JOIN マスタ―テーブル ON [品目テーブル].[M_ID]=[マスタ―テーブル].[M_ID];
となります。その後新しくテキストボックスを作成し、そのテキストボックスのコントロールソースを
=[単価]*[数量]
とする。

あとは、M_IDをコンボボックスに変えたり、品目名や単価を変えられたくなければそれぞれ編集ロックをかけてください。
ご参考になれば幸いです。m(__)m

当方はAccess2000ですけれども基本的な使い方は変わらないと思いますので、
微力ながらお力添え?させていただきます。

データシートに単価のテキストボックスと、数量のテキストボックスがあれば、
新しくテキストボックスを作成し、そのテキストボックスのコントロールソースを
=[単価]*[数量]
とすれば、簡単に金額の計算はできます。

もし、データシートに単価のテキストボックスと、数量のテキストボックスがなければ、データシートを再度作成し直したほうが早いかもしれません。
簡単な方法方法...続きを読む

QAccess VBAよりシート名を取得したい

お世話になります。

現在、Accessにてツールを作成しておりますが、VBAより
特定のパスにあるExcelファイルのシート名を取得する必要が
あります。
※当該ツールはRuntime環境にて利用するため、CreateObject
 が利用できません。

取得はDAO.Tabledefs を使って取得できましたが、GetObjectを
使って取得する方法をご教授頂けると幸いです。

シート名を取得するExcelファイルが、 C:\test\テスト.xlsxの場合
どのような記述になりますでしょうか。

勉強不足で大変恐縮ですが、ご教授のほど宜しくお願い致します。

Aベストアンサー

Access VBAよりExcelのシート名を取得
http://oshiete.goo.ne.jp/qa/8772873.html

ここでの OpenSchema を使用したものは不評だったでしょうか

というのは置いといて


関数を用意しました
いろんなパターンでテストはしていないので・・・
(完成形ではないので不具合等は修正してください)

GetExcelSheet に、Excelファイルのフルパスを与えると
シート名の配列が Variant で得られます。
内部でエラーがあったら、最後のエラー番号を返します。

内部の動きとして、GetObject で対象の Excel ファイルを開きます。
GetObject で初めて開かれた場合、そのファイルの Visible は False
False なら後始末としてそのファイルを閉じ、
結果 Excel で開いているファイルが無ければ、Excel を終了します。
つまり、既に開いていたものについては閉じる事はしません。

この関数の使い方は、後半の Samp1 を例としてください。

Public Function GetExcelSheet(sPath As String) As Variant
  Dim oApp As Object, oBook As Object
  Dim vA() As Variant, v As Variant
  Dim i As Long

  On Error Resume Next
  i = 0
  Set oBook = GetObject(sPath)
  If (Not oBook Is Nothing) Then
    For Each v In oBook.Worksheets
      ReDim Preserve vA(i)
      vA(i) = v.Name
      i = i + 1
    Next
    Set oApp = oBook.Application
    For Each v In oApp.Windows
      If (v.Caption = oBook.Name) Then
        If (Not v.Visible) Then
          oBook.Close SaveChanges:=False
        End If
        Exit For
      End If
    Next
    Set oBook = Nothing
    If (oApp.Workbooks.Count = 0) Then oApp.Quit
    Set oApp = Nothing
  End If
  GetExcelSheet = vA
  If (Err <> 0) Then GetExcelSheet = Err.Number
End Function

Public Sub Samp1()
  Dim v As Variant
  Dim sS As String
  Dim i As Long

'  v = GetExcelSheet(CurrentProject.Path & "\test.xlsm")
  v = GetExcelSheet("C:\test\テスト.xlsx")
  If (IsArray(v)) Then
    sS = "> シート数 = " & UBound(v) + 1 & vbCrLf
    For i = 0 To UBound(v)
      sS = sS & v(i) & vbCrLf
    Next
    MsgBox sS
  End If
End Sub


余談)

piroin654 さんのは

>  With appObj
>    For Each appObj In .Sheets

部分の、For Each 用の変数を変更すれば良いと思います。
また、Shell で起動しておくことは不要と思います。
(/Runtime オプション付きで起動した中での確認なので?)

Access VBAよりExcelのシート名を取得
http://oshiete.goo.ne.jp/qa/8772873.html

ここでの OpenSchema を使用したものは不評だったでしょうか

というのは置いといて


関数を用意しました
いろんなパターンでテストはしていないので・・・
(完成形ではないので不具合等は修正してください)

GetExcelSheet に、Excelファイルのフルパスを与えると
シート名の配列が Variant で得られます。
内部でエラーがあったら、最後のエラー番号を返します。

内部の動きとして、GetObject で対象の Excel ファイルを開...続きを読む


人気Q&Aランキング

おすすめ情報