• 締切済み

Excel で CELL 関数が使えない

Excel for Mac 2011 を使っています。 何も入力されていないシートの A1 セルに「=CELL("row",B1)」と入力して「1」が返されるのを期待しているのですが、「#VALUE!」エラーが返されてしまいます。 ミスタイプしていないか何度も確認し、問題ありませんでした。 ネット上のサポート情報から同様の例をコピペしても同じ結果でした。 「=CELL("type",B1)」と入力してみると正しく「b」が返されます。 CELL 関数は公式のヘルプでも Excel for Mac 2011 でサポートされているようですが、なぜこのようなエラーが発生するのでしょうか?

みんなの回答

  • msMike
  • ベストアンサー率20% (363/1775)
回答No.2

=CELL("row",B1:C5) の戻り値は何になるか試してみてください。

KateArgent
質問者

補足

同じく「#VALUE!」エラーになります。 エラーが発生するファイルを iCloud Drive に保存して iPad や iPhone の Excel で開くと「#VALUE!」エラーは発生せず正しく表示されます。 また、別の Mac の Excel for Mac 2011 では正しく動作しました。 以上のことから、たぶん問題の発生している Mac 固有の問題で、たぶん再インストールすれば直るのだろうと思いました。 ただ、CELL 関数を使用せず ROW 関数を使う(例えば「=ROW(B6)」)と問題なく動作します。 実用上はそれで問題ありませんので、これで問題を回避しようと思います。 早々とご回答いただきありがとうございました。

回答No.1

すいません。 WIN10+EXCEL2013 WIN7+EXCEL2010 WIN8.1+EXCEL2007(なぜか) 以上の環境ではうまくいってます。 という報告くらいしかできません。 同じ環境で使っている方の登場を待つか、 マイクロソフト コミュニティ https://answers.microsoft.com/ja-jp で聞いてみると良いかもしれません。 うまくいけば、マイクロソフト公式サポートさんの 見解を聞けるかもしれませんよ。  

関連するQ&A

  • ExcelのIF関数について

    お世話になります。 現在Excelで、 各社員の勤務時間などを記録するファイルを 作成しているのですが、 B7のCellの値が "土" もしくは "日" だった場合、 G7のCellの値を "2" にするというIF文を書いているのですが、 G7のCellに =IF(OR(B7="土",B7="日"),"2","1") と書きましたところ、 入力した値は正しくありません。 ユーザーの設定によって、Cellに入力できる値が 制限されています。 というエラーが出てしまいます。 G7というCellはコンボボックスのCellであり、 確かに入力制限もしています。 このような場合にはIF関数などは使えないのでしょうか、 どなたか、対応策などがご教授願えないでしょうか、 よろしくお願いします。

  • エクセルVBAについて

    こんにちわ! 今、エクセルでAシートの入力した項目をBのシートへデーターが入力できるようなシステムを以下のようにくみました。 そこでBシートにデーターが入力されるのですが20行まで入力すると入力できないようにしたいのですが、なかなか上手くいきません。 A1からF20まで書式のロックを外しそれ以外のセルは保護をかけたのですがその状態でVBAを使って20行以上入力できませんという感じのエラー表示をしたいのですが、どうすればいいでしょうか? VBAは初心者ですが宜しくお願いします。 Private Sub CommandButton1_Click() Dim row As Integer row = WorksheetFunction.CountA(Sheets("date").Columns(1)) + 1 Sheets("date").Cells(row, 1).Value = Range("B2").Value row = WorksheetFunction.CountA(Sheets("date").Columns(2)) + 1 Sheets("date").Cells(row, 2).Value = Range("B3").Value row = WorksheetFunction.CountA(Sheets("date").Columns(3)) + 1 Sheets("date").Cells(row, 3).Value = Range("B4").Value row = WorksheetFunction.CountA(Sheets("date").Columns(4)) + 1 Sheets("date").Cells(row, 4).Value = Range("B5").Value row = WorksheetFunction.CountA(Sheets("date").Columns(5)) + 1 Sheets("date").Cells(row, 5).Value = Range("B6").Value row = WorksheetFunction.CountA(Sheets("date").Columns(6)) + 1 Sheets("date").Cells(row, 6).Value = Range("B7").Value Sheets("統制入力").Select Range("B17").Select ActiveWindow.SmallScroll Down:=-9 Range("B3:B7").Select Selection.ClearContents Range("B1").Select End Sub

  • エクセルのマクロの詳しい方お願いします。

    いつもお世話になってます。マクロ初心者なのでよろしくお願いします。 ひょんなことからマクロをすることになり、いろいろ探してやっているのですが、どうしてもうまくいかないので、ご教授願います。  内容は for next の使い方なのですが、  やりたいことは、D列にあるデータとE列にあるデータを足して、D列に表示させるのですが、  行数が300行となるので、for nextを使おうと考えました。 Dim i As Long For i = 1 To 300 Worksheets("sheet1").cell(5 + i, 4) = Worksheets("sheet1").cell(5 + i, 4).Value +    Worksheets("sheet1").cell(5 + i, 5).Value Next i と、マクロを入れたら、実行時エラー’438’ オブジェクトは、このプロパティまたはメッソドをサポートしていません。  と、表示されます。 どのように書き込んだらよろしいでしょうか。よろしくお願いします。 また、もっと簡単な書き方があればお願いします。

  • EXCELの関数に付いて

    FOM出版のMOS.EXCEL2003Expertで「データの整理と分析」タスク2のlesson2の問題を正答どうりの関数を入力してもエラーになってしまいます。入力関数は「=IF(B18='''','''',VLOOKUP(B18,H18:J29,2FALSE))」で、''''の所がエラーのようです。なぜ正答どうり入力しているのにエラーになってしまうのですか?お詳しい方ご教授お願いします。

  • Excel X for Mac で扱える最大行数は?

    私は、現在でも Excel X for Mac を仕事で使用しています。 Excel X for Mac では、最大で何行のデーターを入力できるのでしょうか。 Microsoft のサポートに電話で質問したところ、「既に Excel X for Mac はサポート期間が過ぎているので不明」と言われ、HP の Q & A で情報を探すようにアドバイスを受けましたが、最大行数に関する情報はありませんでした。どなたかご存じの方はいらっしゃらないでしょうか。よろしくお願いします。

  • Excel  VBAのマクロについて

    以下のようなマクロを作りました。 P4に開始番号P6に終わりの番号があるのですが、P4=P6、つまり、一つだけのシートを作成する分には問題なく動きます。しかしP4に1、P6に5と範囲を増やすとエラーが出て動きません。どこをなおしたらよろしいでしょうか? Option Explicit Sub 一括() Dim I As Worksheet Dim SheetName As String Dim Prompt As String Dim Col As Integer Dim Cell As Range Dim Row As Long Dim hani As Long For hani = Range("P4").Value To Range("P6").Value Set I = ActiveSheet SheetName = Cells(hani + 4, "K").Value & "(" & Cells(hani + 4, "B") & ")" Prompt = SheetName & "が存在します。" Sheets("基本シート").Copy After:=Sheets("基本シート") On Error GoTo 100 ActiveSheet.Name = SheetName On Error GoTo 0 Range("X3") = I.Cells(hani + 4, "B") Range("E8") = I.Cells(hani + 4, "C") Range("A13") = I.Cells(hani + 4, "D") For Col = 0 To 8 Step 4 Set Cell = I.Cells(hani + 4, "D").Offset(, Col) If Cell > 0 Then Prompt = "該当する日付がありません。" & Cell.Address On Error GoTo 100 Row = WorksheetFunction.Match(Cell, [A:A], 0) On Error GoTo 0 Cells(Row, "E") = I.Cells(hani + 4, "E").Offset(, Col) Cells(Row, "H") = I.Cells(hani + 4, "F").Offset(, Col) If Col < 8 Then Cells(Row, "Y") = I.Cells(hani + 4, "G").Offset(, Col) End If End If Next Col Next hani End 100 If Err <> 1004 Then Error Err End End If MsgBox Prompt, vbCritical Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True Sheets(1).Select End Sub

  • エクセルVBAとmsg関数

    こんばんは。 エクセルVAB初心者です。 現在、エクセル2003で以下の画像のような 表を作成しました。 上段が請求書データ(シート1)で、 下段が請求書の印刷フォーム(シート2)です。 VBAで実行する処理は、請求書データNOをそれぞれ 任意でクリックし、選択しているNOの行データをシート2にそれぞれ 転記していき、一括で印刷するものです。 以下のように、コードを作りました。 Sub 発行() Dim i As Range Dim m As Integer Dim W1 As String With Selection W1 = Cells(.Row, 1).Value & " ~ " & _ Cells(.Rows.Count + .Cells(1, 1).Row - 1, 1).Value & vbCrLf & _ " の請求書を発行しますか?" m = MsgBox(W1, vbYesNoCancel) If m <> vbYes Then Exit Sub For Each i In .Resize(, 1) With Sheets("Sheet2") .Range("b1").Value = Cells(i.Row, 1).Value .Range("e1").Value = Cells(i.Row, 2).Value .Range("c5").Value = Cells(i.Row, 3).Value .Range("b3").Value = Cells(i.Row, 4).Value .Range("c6").Value = Cells(i.Row, 5).Value .PrintOut End With Next End With End Sub ここで質問なのですが、"の請求書を発行しますか?" の後に、選択している行の数を(合計O枚)のように 表示したいのですが、どのようなコードを入れればいいのでしょうか。 また、メッセージボックスのウインドウの中の文字が 小さいので、もう少し大きくしたいのです。 以上の2点ですが、お願いします。

  • excel 2003 と 2007 の違い?

    職場のPC ・windowsXP ・excel2003 自宅PC ・windows7 ・excel2007  職場には自分専用端末がないので、自宅でコードを書いてUSBメモリにコピーし、 職場でペーストするという環境で起きた問題です。  やりたいことは、顧客から送られてくるデータを sheet1 に保存し、 sheet2 に置いてあるマスターデータを参照して不必要な行を削除するマクロです。  以下、コード _______________________ Sub 別シート参照デリート() Dim st1, st2 As Worksheet Set st1 = ThisWorkbook.Sheets("sheet1") '作業用シート Set st2 = ThisWorkbook.Sheets("sheet2") 'マスターシート Dim st1Row, st2Row As Integer st1Row = st1.Cells(Rows.Count, 1).End(xlUp).Row st2Row = st2.Cells(Rows.Count, 1).End(xlUp).Row Dim st1value, st2value As String Dim i, j As Integer 'マスターシートを参照して必要ないものは削除する For i = st1Row To 1 Step -1 st1value = st1.Cells(i, 3).Value For j = st2Row To 1 Step -1 st2value = st2.Cells(j, 1).Value If st1value = st2value Then Exit For '該当するなら必要行なので次へ ElseIf j = 1 Then st1.Cells(i, 3).EntireRow.Delete 'st2の先頭行は"品番"なので不必要=削除 End If Next j Next i End Sub _______________________  自宅環境では問題なく動作するのですが、職場のPCだと ”オブフェクトが必要です” のエラーが返ってきます。 かといって、どの構文でエラーが出ているのか教えてくれない(反転しない)んです。  どこにエラーがあるのでしょうか?  よろしくお願いします。

  • EXCELでの関数についての質問

    EXCELの関数についての質問です。EXCELのバージョンは2010を使用しています。 状況を簡略化して説明すると以下のとおりです。 Cell(A1)=実数   (数値、あるいは空白) Cell(B1)=数式   (=IF(ISBLANK(A1),"",50/B2*100) Cell(C1)=数式   (=IF(ISBLANK(B1),"",100-C2) これでA1~A100までデータが散在するデータベースを想定してください。 この時B1は定数を参照しているのでA1がBLANKの時、ISBLANK関数の効果で文字が表示されず、 またA1が数値の時には式の通り計算が行われます. しかしCでは、B1の数式を参照していることになるので、B1がBLANKの場合でも計算が行われ、 結果として#VALUE!のエラーとなります。 この状況を回避するためにはどうすればいいのか、スマートな解法をお待ちしています。 VBマクロなどの方法でも大丈夫ですが、基礎的なことしかわからないのでコメントを付けていただけるとありがたいです。 そこまで実害は無い問題なので、例えば別個に計算するなどの力技はご遠慮ください。

  • Excel VBA 引数が2個のマクロの呼び出し方

    ExcelのVBAで、 シート上のボタンがクリックされた時に呼び出す マクロ(プロシージャ)の引数が1個の時は、 コード1のようにできましたが、 引数が2個ある時は、コード2のように記述しても、 ボタンをクリックするとエラーになりますが、 【?】の部分をどのように記述すればよいのでしょうか。 (Windows10,Excel2010) -------------------コード1---------------------------------------- Sub test1()  Dim row As Integer  Dim wave_file_path As String  For row = 1 To 2   wave_file_path = ThisWorkbook.Worksheets("Sheet1").Cells(row, 1).Value   Call ボタン作成(row, wave_file_path)  Next row End Sub Sub ボタン作成(ByVal row As Integer, ByVal wave_file_path As String)  Dim cell_loc As String  cell_loc = ThisWorkbook.Worksheets("Sheet1").Cells(row, 3).Address  ThisWorkbook.Worksheets("Sheet1").Select  With ActiveSheet.Buttons.Add(Range(cell_loc).Left, _   Range(cell_loc).Top, _   Range(cell_loc).Width, _   Range(cell_loc).Height)   .name = "ボタン_" & cell_loc   .OnAction = "'WAVE_PLAY """ & wave_file_path & "" & "'"   .Characters.Text = "再生"  End With End Sub Sub WAVE_PLAY(ByVal wave_file_path As String)  If Dir(wave_file_path) = "" Then   MsgBox wave_file_path & vbCrLf & "がありません。", vbExclamation   Exit Sub  End If  Shell "C:\Program Files\Windows Media Player\wmplayer.exe /play /close " & wave_file_path End Sub ------------------------------------------------------------------- -------------------コード2---------------------------------------- Sub test2()  Dim row As Integer  Dim wave_file_path As String  For row = 1 To 2   wave_file_path = ThisWorkbook.Worksheets("Sheet1").Cells(row, 1).Value   Call ボタン作成(row, wave_file_path)  Next row End Sub Sub ボタン作成(ByVal row As Integer, ByVal wave_file_path As String)  Dim cell_loc As String  cell_loc = ThisWorkbook.Worksheets("Sheet1").Cells(row, 3).Address  ThisWorkbook.Worksheets("Sheet1").Select  With ActiveSheet.Buttons.Add(Range(cell_loc).Left, _   Range(cell_loc).Top, _   Range(cell_loc).Width, _   Range(cell_loc).Height)   .name = "ボタン_" & cell_loc   .OnAction = "'WAVE_PLAY """ & wave_file_path & "" & "," & row & "'" <==【?】   .Characters.Text = "再生"  End With End Sub Sub WAVE_PLAY(ByVal wave_file_path As String, ByVal row As Integer)  If Dir(wave_file_path) = "" Then   MsgBox wave_file_path & vbCrLf & "がありません。", vbExclamation   Exit Sub  End If  Shell "C:\Program Files\Windows Media Player\wmplayer.exe /play /close " & wave_file_path  ThisWorkbook.Worksheets("Sheet1").Cells(row, 4).Value = "再生済" End Sub -------------------------------------------------------------------

専門家に質問してみよう