EXCEL FAQ2

Excelに画像を貼り付けたら、ファイルサイズが巨大になってしまいました
トリミングやサイズ変更を行なった画像では、画像中の表示されていない部分がファイルに保存されています。
解像度を下げ (Web では 96 dip、印刷では 200 dpi)、必要のない情報を破棄します。
可能であれば画像を圧縮します。
Ver.2007をご使用なら、[図] ツールバーの [画像の圧縮] コマンドを利用できます。
また、リンク貼り付けをすればファイルサイズは小さくなります。

■Windows Vista でファイル サイズを小さく圧縮する方法
ファイルのアイコンを右クリックして、[送る]、[圧縮 (zip 形式) フォルダ] とクリックします。

■Excel2002 で [最後のセル] の位置を修正する方法(97/2000/2002)
実際に最後のデータが入力されているセルの位置と [最後のセル] として認識されているセルの位置が異なることがあります。
これによりスクロール バーの移動量が期待するものにならなかったり、不必要にファイル サイズが大きくなることがあります。
http://support.microsoft.com/kb/405492/JA/

エクセルのファイルをPDFにすることができますか?
ご使用のバージョンがExcel2007の場合、
標準では搭載されていませんが、追加アドインとしてPDF保存が出来るようになります。
[名前を付けて保存]のとき、選択項目に保存形式が選択できるようになります。

2007 Microsoft Office プログラム用 Microsoft PDF/XPS 保存アドイン
http://www.microsoft.com/downloads/details.aspx?FamilyID=4d951911-3e7e-4ae6-b059-a2e79ed87041&DisplayLang=ja

COUNTIF関数で、入力されている「A」の数を数えたいのですが、数えられる「A」と数えられない「A」がある
文字種が1バイトと2バイト文字が混在している可能性があります。日本語入力をオフにして再入力してみてください。
COUNTIF(範囲, 検索条件)
この関数の検索条件では、大文字と小文字は区別されません。

■小文字の a だけをカウントするには
=SUMPRODUCT(LEN(A1:A10)-LEN(SUBSTITUTE(A1:A10,"a","")))
■1バイト、2バイト文字ともカウントするには
=SUM(COUNTIF(A1:A10,{"A","A"}))
■セルの文字が C で始まるセルの個数を求めるには
=COUNTIF(A1:A10,"C*")
■文字列(数値以外)のセルの個数を求めるには
=COUNTIF(A1:A10,"*")
■文字(数値以外)3文字のセルの個数を求めるには
=COUNTIF(A1:A10,"???")
■正の数(ゼロより大きい)のセルの個数を求めるには
=COUNTIF(A1:A10,">0")
■単一のセル(A1)の小文字 a の個数
=LEN(A1)-LEN(SUBSTITUTE(A1,"a",""))
例えばセルA1に AaAaAaA と入力されている場合、答えは 3 と表示されます。

成績をつけているのですが、60点以下が赤点で、その数をCOUNTIF関数で自動に出るようにしたい。
点数範囲を A1〜A100 とした場合
数式 =COUNTIF(A1:A100,"<60")

<参考>60点未満を赤色フォントで表示するには

*Excelのバージョンが2007の場合
データ範囲を選択し、
ホームタブ→スタイル→条件付き書式
セルの強調表示ルール→指定の値より小さい
60 と入力して[OK]ボタンをクリックします。

*Excelの全バージョン
データ範囲を選択し、マウスを右クリック
セルの書式設定→表示形式→ユーザー定義で
[赤][<60]G/標準;G/標準
と入力して [OK]ボタンをクリックします。

<参考>
*Excelのバージョンが2007の場合
複数の検索条件に基づいてセルをカウントする方法として
COUNTIFS 関数も使用できます。

セルに文字入力したら、同じように別のシートのセルに反映させたい。
■作業グループを設定して入力する方法
まず、同じデータを反映させたいシートを選択します。
たとえば[Ctrl]キーを押しながら
Excel画面下のシートタブ(Sheet1 Sheet2 Sheet3など)をクリックします。
すると、タイトルバーには Book1 [作業グループ] - Microsoft Excelと表示されます。
これ以降、たとえばシート1でデータ入力や罫線などを記入すれば
作業グループで指定したシートにも同じデータが同時入力されます。

■図のリンク貼り付けを利用する方法
まず、元のデータ範囲を選択し、コピー、
[Shift]キーを押しながら[編集]コマンドをクリックし、
現れたメニューから [図のリンク貼り付け」をクリックします。
この方法で貼り付けを実行すると、データや罫線など、すべてが反映されます。

■カメラ機能を利用する方法
Excel2007の場合、ホームタブ→[Excelのオプション]→[ユーザー設定]→
[リボンにないコマンド]を選択すると、
リスト一覧に "カメラ" がありますので、この機能を利用します。
他のExcelバージョンの場合、コマンドバーを右クリックして
ユーザー設定から同じように "カメラ" を選択できます。

<使い方> 同じデータを表示させたい元のデータ範囲を選択して、
"カメラ"のアイコンをクリックします。
貼り付けたい別シートのセルをダブルクリックします。
この方法で貼り付けを実行すると、データや罫線など、すべてが反映されます。

■データをリンク貼り付けする方法
たとえば、Sheet1 のデータ範囲を選択して、[コピー]コマンドを実行し、
同じデータを貼り付けたい他シートのセルを1つクリックして、
[形式を選択して貼り付け]→[リンク貼り付け]を選択して[OK]します。
以上の手順で、シート1で変更した文字や値データは他のシートにも反映されます。
ただし、罫線などは無視されます。

■数式を設定する方法
同じデータを表示したいシートのセルを選択して、
記号 = を入力し、別シートのセルをクリックして [Enter]キーを押します。
数式はたとえば =Sheet2!A1 のようになります。
また、演算子 & を用いて =Sheet2!A1&Sheet3!B1 などと指定も可能です。
この方法では、文字や値のみが可能で罫線は無視されます。

Excel2007では、2003の時にまであった「表のオートフォーマット」はなくなってしまったのですか?
[ホーム]タブの→[スタイル]→[テーブルとして書式設定▼]をクリックして、表示される一覧からお選びください。

<その他ご参考>
http://support.microsoft.com/kb/934714/ja
Excel 2007 のインタラクティブ ガイド
http://office.microsoft.com/assistance/asstvid.aspx?assetid=XT101493291041&vwidth=1044&vheight=788&type=flash&CTT=11&Origin=HA101491511041

他シートのデータを使って数式を作成することは可能ですか?
特定のセルやセル範囲に名前を定義すると、数式中で使用でき、単純化できます。
たとえば、Sheet1 の任意のセルに DATA1 と名前をつけます。
たとえば、Sheet2 の任意のセルに DATA2 と名前をつけます。
合計の数式は =SUM(DATA1,DATA2) でOKです。

任意のセルや範囲に名前を付けるには、
名前ボックス(数式バーの左にあります)に DATA1 などと名前を入力して[Enter]キーを押します。

VLOOKUP関数でアルファベットの大文字と小文字を区別するには
VLOOKUP(検索値,範囲,列位置,検索の型)
たとえば、
検索値:A1セル
リスト範囲:D1〜G10
列位置:2
の場合、数式は以下のようになります。
=VLOOKUP(A1,$D$1:$G$10,2,FALSE)
大小文字を区別するには、
=IF(COUNTIF($D$1:$G$10,A1),INDEX($E1:$E10,SUMPRODUCT(EXACT($D$1:$G$10,A1)*ROW($D$1:$G$10))),"")
のように関数を組み合わせて実現します。

以下ページも参考になります。
大文字小文字を区別する検索を実行する方法
http://support.microsoft.com/kb/214264/ja

数字の並べ替えがおかしいのですが?
Excel でデータを並べ替えるとき、
文字列として入力した数字 (文字数値) と数値として入力した数字では
並べ替えの順序が異なることがあります。
また、フィルタでの非表示行や結合セル、数式なども関係する場合があります。

昇順では、数値として入力した数字は他の文字よりも前に位置しますが、
文字列として入力した場合 (文字数値) は、
記号等の後、アルファベットより前に位置します。
▼あいうえお順に並び替えをしたら、めちゃくちゃな並び替えになってしまいます。
Excelが日本語の並べ替えを50音順に行うとき、標準ではセルの"ふりがな"を使います。
希望通りの並べ替えでない場合は、文字列が入力されているセルに、正しくふりがなが設定されているかをご確認ください。

セルにふりがなが設定されているかどうか調べるには、[書式]-[ふりがな]-[表示/非表示] で確認できます。

Excelは入力時の読みを記録し、それを基にふりがなを振ります。
そのため、コピー/貼り付け された文字列にはふりがな情報がありません。

新しくふりがなを設定するには、
セルをダブルクリックして編集モードにして、「再変換」
あるいは、右クリックして「ふりがなの編集」を実行します。
あるいは、[Shift]+[Alt]+[↑]キー を押しながら [Enter]キーを2回押します。

次に、
[並べ替えオプション] の設定を確認してください。

[ふりがなを使う] オプションを指定して並べ替えた場合、
50音順に並び替えられず、"シフトJIS コード" 順 になります。

[ふりがなを使わない] を指定して並べ替えた場合、
"文字コード" 順 に並びます。

<ご参考>日本語の並べ替え順序
ひらがなとカタカナは、五十音順に並べ替えられます。
英字はアルファベット順に並べ替えられます。大文字と小文字は区別されません。
数値は、数の小さい順に並べ替えられます。
英数字と記号については、半角と全角が区別されません。
繰り返し記号 ("々") は、直前の文字と同じ文字と見なされます。

ファイル名の後ろに「1」が付いて開いてしまいます。「ファイル⇒開く」の手順では問題なく開きます。
ファイルをダブルクリックして開く際、ファイルが開く前に再度ダブルクリックした場合、や
マクロやアドインの設定を変更したり、操作を繰り返した場合などの原因が考えられます。

■[Excelのオプション] から 設定されている"アドイン" をすべて解除してExcelを終了してください。

■ファイルタイプの確認
[コントロールパネル]→[プログラム]→[既定のプログラム]→
[ファイルの種類またはプロトコルのプログラムへの関連付け]
をクリックして、表示されるファイルタイプをご確認ください。

名前(エクセルファイルの拡張子)の一覧で「現在の既定」が
Microsoft Office Excel で、"説明" を確認します。

.xls Microsoft Office Excel 97-2003 ワークシート
.xlsx Microsoft Office Excel ワークシート
.xlsm Microsoft Office Excel マクロ有効ワークシート

もし、Microsoft Office Excel テンプレート または Microsoft Office Excel アドイン
などとなっている場合は、[プログラムの変更] をクリックして[参照]から
"Microsoft Office Excel" を選択しなおして[OK]してください。
そして、再起動してください。

列を挿入したら式も自動で=B1*D1に変わっていました。行列の削除や挿入をしても式は変更したくありません。
■INDIRECT(参照文字列 , 参照形式)関数を使う方法
セルの移動や削除に影響されず、
いつも同じセルを参照することが可能です。

セル参照数式は、コピーしたとき、行列の挿入時にはアドレスが自動調整されますが、移動のときは調整されません。
また、=A1 という参照式でセルA1を参照する場合、
1行目やA列全体を削除すると、#REF! というエラーになります。
行や列を削除しても、同じセルを参照したい場合もINDIRECT関数が役立ちます。
=A1 の代わりに =INDIRECT("A1") と指定します。

A1セル元の数式 =B1*C1 で C列が新規挿入列(空白)ならば、
=B1*INDIRECT("C1") あるいは =INDIRECT("B1")*INDIRECT("C1")
で元の数式と参照は一致します。
しかし、この数式を下方向へドラッグコピーすると
すべての行の数式が同一となる不都合が生じます。
したがって、"列"に"行番号" ROW() を組み合わせて数式を完成させます。

=INDIRECT("B"&ROW())*INDIRECT("C"&ROW())

■OFFSET(基準,行数,列数,高さ,幅)関数を使う方法
基準のセルまたはセル範囲から指定された行数と列数だけシフトした位置にある高さと幅のセルまたはセル範囲の参照 (オフセット参照) を返します。
返されるセル参照は、セル、セル範囲のいずれかの参照です。
また、返されるセル参照の行数と列数を指定することもできます。

A1セル元の数式 =B1*C1 ならば、下記数式となります。

=B1*OFFSET(A1,,2)

これは、B1 * セルA1を基準に"右に2列目"を指定したことになります。
数式を下方向へドラッグコピーすればOKです。

<その他参考>
セル参照方法として、相対参照、絶対参照、複合参照(3D参照)などがあります。

A列に2分ごとのデータが5000行程あります。10分ごとに表示させたいのですが?
■Excel Ver.2007なら以下の方法をお試しください。
オートフィルタの"色フィルタ"を使用して、10分ごとのデータを表示する方法

前提:1行目はタイトル行とします。
前提:各行は2分刻みのデータとします。

まず、データ範囲(たとえば、A1:B5000)を選択して、
[ホーム]タブ→[条件付き書式]→[セルの強調表示ルール]→[その他のルール]→
ルールの種類で [・数式を使用して、書式設定するセルを決定] を選択して
数式ボックスに下記数式を入力します。
=MOD(ROW(),5)=2
そして、[書式]ボタンをクリックして[塗りつぶしタブ]から
任意の色を選択して[OK]をクリックします。
この操作で行2,7,12,17,22,27...と条件が適用されカラー表示されます。

これで、オートフィルタの"色フィルタ"を使用して、
"セルの色でフィルタ"を適用すると、ご希望の行のみ表示されます。

■Excel Ver.〜2003なら以下の方法をお試しください。
"空白列"を使用して"2行目"に下記数式を入力します。
=IF(MOD(ROW(A2),5)=2,10,"")

そして、数式を下方向へ最終データ行までドラッグコピーします。
すると10分ごとのデータ行のみ「10」と表示されますので、
オートフィルタで選択、表示できます。

2009年3月を "200903”、2005年7月を "200507゛と表示しています。経過月数を計算する方法を教えてください。
Excelで日時の計算を行なう場合、"シリアル値" を基本とします。
シリアル値とは、日付と時刻を数値で表したもので、
Excelでは日付と時刻をシリアル値に置き換えて計算します。
シリアル値では、1900年1月1日を "1" とし、
1900年1月1日から 9999年12月31日の日付は、
1 〜 2958465 の整数に置き換えられます。
また、時刻は 1 日の一部として小数値で置き換えられます。

■元セルの表示形式は標準のままで、6桁の数字の場合、
数式は下記のようになります。
=DATEDIF(TEXT(MIN(A1,B1),"0-00"),TEXT(MAX(A1,B1),"0-00"),"M")
<開始年月と終了年月の指定が逆の場合でも月数を計算します。>

■元セルは日付で、表示形式をユーザー定義 yyyymm としている場合、
=DATEDIF(TEXT(A1,"yyyy/m/d"),TEXT(B1,"yyyy/m/d"),"M")
<計算結果がマイナス(開始年月と終了年月の指定が逆)の場合はエラーとなります。>

下記は、開始時点から終了時点まで、何年何ヶ月何日経過したかを計算する方法です。
■経過した年数を返す DATEDIF 関数
=DATEDIF(開始年月日,終了年月日,"Y")
■経過した 1 年未満の月数を返す DATEDIF 関数
=DATEDIF(開始年月日,終了年月日,"YM")
■経過した 1 月未満の日数を返す DATEDIF 関数
=DATEDIF(開始年月日,終了年月日,"MD")

エクセルで既存のファイルを開くと新しいファイルが同時に開いてしまいます。(office2003、XLStartフォルダは空です)
■作業状態ファイル(現在開いているブックの作業状態の情報を保存するファイル)は自動的に開かれます。
次のフォルダをご確認ください。
C:\Documents and Settings\<ユーザー名>\Application Data\Microsoft\Excel
C:\Program Files\Microsoft Office\Office11

■起動時のオプションを指定
Excel を開いて閉じ、すべてのレジストリ キーを書き換え、
Excel とすべての Excel ファイル (ブックやグラフなど) の関連付けを再設定する。
[ファイル名を指定して実行] コマンド から

excel.exe /regserver

と入力して [OK] をクリックします。(Vistaは、Windowsキー +「R」)

<参考ページ>
Office Online "Excel の起動方法を指定する"
http://office.microsoft.com/ja-jp/excel/HP051993911041.aspx

同一の値のセルはすべて同じ色にしたいのですが?
リアルタイムで行うのでなければ「検索と置換」で実現できます。
まず、
[検索]コマンドを実行し、
検索文字列(同一の値や文字列など)を入力します。

"セル内容が完全に同一であるものを検索する" を選択し、
[すべて検索] をクリックします。
すると、見つかったセルアドレスの一覧が下部に表示されますので、
[Shift]キーを押しながら、すべて選択します。

以上の操作で、同一のセルがすべて選択された状態になります。
そして、
通常のメニューから、お好みの書式や色を適用すれば、
同一の値や文字列は一括して変更できます。

<参考>
ブック内のすべてのシートを対象にする場合は、
[Shift]キーを押しながら、シートタブ Sheet1 Sheeet2 Sheet3
をクリックして選択状態にしておきます。

シートにグラフを作成し、別のシートに貼り付けたグラフは%表示がされず、“*.*****”となってしまいます。
まず、元グラフの配置を [Alt]キーを押しながら、セルに合わせて配置します。
そして、グラフに隠れた "下" のセルを[Shift] + 矢印キーで全選択します。
次に、"コピー" コマンドを実行し、
貼り付けたい別シートのセルをひとつクリックし、

[貼り付け]アイコン下の▼をクリックして、
[図]→[図のリンク貼り付け] を実行します。

以上の操作で、元グラフと同一のグラフオブジェクトとなります。

Excel Ver.〜2003 の場合は、
[Shift]キーを押しながらメニューの[編集]をクリックすると
[図のリンク貼り付け] コマンドが表示されます。

Office2003と2007を同一PCにインストールしました。OSはVista HomePremiumです。MSは推奨していませんが、どんな不具合がありますか?
複数バージョンのソフトをインストールするときは、
古いバージョンから入れるというのが鉄則です。
これはDLLなどが古い版で上書きされるのを防ぐのが目的です。

旧バージョンでは新しいバージョンで採用された機能は使用できません。
例えばExcelでは、使用できる関数は制限され、対応しない計算結果はエラーになります。

■ファイルの関連付けに関する問題
複数のバージョンのOffice製品をインストールすると、
ファイルの関連付け(例えば.docファイルをダブルクリックしたときに起動されるアプリケーションの指定)が、
最後にインストールしたOffice製品になります。
(Wordの場合、最後に起動したものがデフォルトになります)。

■Excelの旧バージョン(2003など)とExcel2007を同じパソコンに入れると、
ヘルプ機能が使用できない(表示されない)とか、
個人用マクロブックが使用できないなどの問題が生じる場合があります。

■複数バージョンのExcelを入れたパソコンでは、
Book(ブック)をダブルクリックすると、次のように開かれます。

<例>
すでにどれかのExcelが起動している場合は、"そのExcel"で開く
Excelがどれも起動していない場合は、"最新のExcel"で開く
これは、拡張子の関連づけが、最後にインストールしたバージョンとなるためです。
複数のバージョンを入れた場合、
アイコンをダブルクリックして開くと思わぬトラブル(互換性の問題)が生じます。

<ポイント>
混乱を避けるためには、各Officeバージョンのインストールごとに
メニュー中に[Office2000]や[Office 2002][Office 2003]など
サブフォルダを作成して、その中へメニュー項目を移動しておくのが賢明です。

<参考>
■複数のバージョンのOfficeをインストールする
http://www.atmarkit.co.jp/fwin2k/win2ktips/847office/office.html
■2007 Officeスイートおよび 2007 Office プログラムを、
他のバージョンの Office を実行しているコンピュータで使用する方法
http://support.microsoft.com/default.aspx?scid=kb;ja;928091
■1台のコンピュータで複数のバージョンの Office を実行する方法
http://support.microsoft.com/default.aspx?scid=kb;ja;290576

■Outlookは複数バージョンの共存はできません。
新しいバージョンをインストールすると、古いものは自動的に上書き更新されます。

平均の出し方で、0が入っている場合は、それはカウントしない(足さず割らない)方法はありますか?
■ゼロを含まない平均を求めるには
たとえば、セル範囲 A1:A10 に値が入力されている場合、
ゼロを除いた平均を求めるには、求めるセルに下記数式を入力します。

=SUM(A1:A10)/COUNTIF(A1:A10,"<>0")

<注>この数式の場合、範囲のゼロは除きますが、空白は計算対象となります。

■ゼロを含まない平均を求めるには(配列数式)
前記と同じ条件と仮定した場合の数式は下記のようになります。

{=AVERAGE(IF(A1:A10<>0,A1:A10,""))}

<配列数式の入力方法>
上記数式をコピーする場合、数式の前と後ろの { } は不要です。
=AVERAGE(IF(A1:A10<>0,A1:A10,"")) の部分をコピーして、
[Ctrl]キーと[Shift]キーを押しながら、[Enter]キーを押します。
すると、自動的に数式の前後に { } が付加されます。

<注>配列数式では単純に[Enter]キーを押すとエラー(#VALUE!)となります。

同一ワークシート内にある、離れた場所のセルをすべて足し算して合計欄に表示したい 。
もっとも単純で確実な合計方法です。
合計欄のセルをクリックし、
オートサム (Σ)記号のアイコンをクリックし
離れた場所のセルを [Ctrl]キーを押しながら順次クリックします。
そして最後に [Enter]キーを押してください。

<参考>
Ver.2007の場合、関数の引数は 1 〜 255 個まで指定できます。
Ver.〜2003の場合は下記の方法をお試しください。
まず、合計したいセルを[Ctrl]キーを押しながらすべてクリックします。
そして、
数式バーの左側の 名前ボックス に
例えば TOTAL と入力して [Enter]キーを押します。
そして、合計欄のセルに
=SUM(total)
と数式を入力してください。

<参考>
合計したいセルが多数の場合、
名前を二つ(例えば、TOTAL と TOTAL2 ) つけて、それぞれのセルを選択してください。

名前を複数つけた場合の 合計欄の数式例
=SUM(total,total2)

<注意>
名前ボックスに入力する名前は、
大文字(TOTAL)と小文字(total)の区別はされません。

計算結果が「0」の時、その行を非表示または削除する関数はありますか?
Excelで "行の非表示または削除"する関数は提供されていません。
計算結果がゼロ(0)の列が決まっているのであれば、
ツールメニューのオートフィルタで抽出して非表示や削除が簡単かと思います。

■マクロでゼロがある行を削除するサンプルです。

Sub myDelZero()
'C列に値ゼロがあれば行全体を削除します
Const intCriteria As String = 0 '値ゼロを指定
With Cells(2, 1).CurrentRegion '最上段はタイトル行
On Error GoTo errhandler
.AutoFilter Field:=3, Criteria1:=intCriteria '左から3列目対象
.Offset(1).Resize(.Rows.Count - 1). _
SpecialCells(xlCellTypeVisible).EntireRow.Delete '削除
End With
ActiveSheet.AutoFilterMode = False
Exit Sub
errhandler:
ActiveSheet.AutoFilterMode = False
MsgBox intCriteria & " は見つかりませんでした。"
End Sub

-------
<手順>
[Alt]+[F11] で Visual Basic Editorを開きます。
左側のプロジェクトエクスプローラで Sheet1をダブルクリック
右側に上記サンプルコードをコピー/貼り付け
エクセル Sheet1 に戻ります。
マクロ名 myDelZero を[実行]します。

<ご参考>
・サンプルはC列が対象ですが任意の列を指定してください。
Field:=3 左から数えて何番目の列かを指定します。
・シート上に図形を作成して、マクロを登録すると便利です。
・ファイルを開く時「<・・・>はマクロを含んでいます。」というメッセージが出ます。
[マクロを有効にする]をクリックすると、作成したマクロを使用できるようになります。

B列の指定文字 ABC 以外の行を削除したい
Sub myDelMoji()
'Sheet1のB10以下の指定文字 "ABC" 以外の行を削除します
Sheets("Sheet1").Select
Application.ScreenUpdating = False
Dim i As Long
For i = Range("B" & Rows.Count).End(xlUp).Row To 10 Step -1
If Range("B" & i).Value <> "ABC" Then Rows(i).Delete Shift:=xlUp
Next i
End Sub


<参考>論理記号を用いて下記のように条件を指定できます。
'Sheet1のB10以下の指定文字 "ABC" の行を削除します
If Range("B" & i).Value = "ABC" Then Rows(i).Delete Shift:=xlUp
'Sheet1のB10以下の指定文字 "ABCで始まる" 以外の行を削除します
If Range("B" & i).Value < "ABC" Then Rows(i).Delete Shift:=xlUp
'Sheet1のB10以下の指定文字 "A,AB,ABC" 以外の行を削除します
If Range("B" & i).Value > "ABC" Then Rows(i).Delete Shift:=xlUp

<注意>文字列以外の空白や数値は対応しません。

特殊文字を削除する方法
Unicodeと、Shift-JIS では文字の並びが違いますので、以下のようなユーザー定義関数をご利用ください。

Function CleanEx(Src As Variant) As String
Application.Volatile
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = "[\u00A0-\u3004\u3012\u3220-\u33FE]"
CleanEx = .Replace(Src, "")
End With
End Function

ファイルが複数あり、それぞれの数字をリンクさせて自動的に表示させるにはどうすればいいでしょう?
外部参照の数式を作成して実現します。
以下の方法をお試しください。

たとえば、"統合Book"に 外部ファイル "別Book1"と"別Book2" のデータを表示させるには、

まず、すべてのブックを開きます。

そして、統合Bookの表示させたいセルに
等号 = を入力し、
"別Book1" や "別Book2" のセルをクリックして [Enter]キーを押します。
以上の操作で、別ブックの値がリンク表示されます。

また、別ブックのセルの値を合計表示させるには、
統合Bookの表示させたいセルに、
等号 = を入力し、
別ブックのシートのセル、セル範囲を指定してクリック、
さらに、 カンマ , で区切って別のブックのシートやセルを指定し、
そして、[Enter]キーを押します。
以上の操作で、別ブックの値が合計表示されます。

<参考>
別ファイルを参照する数式は、Excelが自動で設定してくれます。

<ご注意>
別ファイルを参照する式は、ファイルの保存場所もパスとして記録されます。
そのため、参照先のファイルを別の場所に移動すると、
数式は値を更新できず記録されているパスの情報が無効となります。
ファイルと外部参照のファイルは同じフォルダに置いてください。

セルの全角と半角の文字をチェック
=IF(LEN(A1)*2=LENB(A1),"全角",IF(LEN(A1)=LENB(A1),"半角","混合"))

条件付き書式による方法
1)たとえば、A1:A10の範囲を指定します。
2)メニューの「書式」→「条件付き書式」を選択して、
3) 条件1の下の「セルの値が」を「数式が」に変えて、
=LEN(A1)<>LENB(A1) と入力して
4)「書式」をクリックして、任意の「パターン」を指定し[OK]します。

住所データのカタカナは全角に、英数字は半角に変換したい (Module1:ユーザー定義関数)
Function StrChange(ByVal strString As String) As String
'カタカナは全角に、英数字は半角に変換します
'ユーザー定義関数例 =StrChange(A1)
Dim i As Integer, strCut As String, Str As String
Application.Volatile
i = 0
Str = ""
Do While Len(strString) > i
i = i + 1
strCut = Mid(strString, i, 1)
If (strCut >= "0" And strCut <= "9") _
Or (strCut >= "A" And strCut <= "Z") _
Or (strCut >= "a" And strCut <= "z") Then
Str = Str & StrConv(strCut, vbNarrow)
ElseIf strCut >= "ア" And strCut <= "ン" Then
Str = Str & StrConv(strCut, vbWide)
Else
Str = Str & strCut
End If
Loop
StrChange = Str
End Function


ユーザー定義関数式は下記のように指定します。
=StrChange(A1)

<参考>関数ASC は1バイト、関数JISは2バイトに変換できます。

計算結果の「0」が表示されないようにしたい
計算結果として表示させないようにするには、書式記号の「#」を使う方法があります。
[ユーザー定義]→[書式]  #,##0  を #,###  と設定します。

「このセルにある数値が、テキスト形式か、またはアポストロフィで始まっています」警告が出る [2007]
"アポストロフィ"は数値を文字列(たとえば、00123 など) とする場合、最初に入力します。
下記は、三角マークがでない方法です。

■空白のセルを コピー し、
三角マークが出る該当セルやセル範囲を選択して右クリック、
メニューの「形式を選択して貼り付け(S)」→
演算を「加算」として[OK]ボタンをクリックします。

または、
■列単位で範囲を選択し、
[データ]タブ → [データツール]の[区切り位置]アイコンをクリックし、
[完了]ボタンをクリックします。

または、
■Officeボタン→[Excelのオプション]→
左側の「数式」をクリックして、右側に表示される項目"エラーチェック" の
"バックグラウンドでエラーチェックを行う(B)"
のチェック(レ印)をはずして [OK] をクリックします。
ただし、この方法はExcel全体に影響するためおすすめできません。

<参考>
セルに表示されないアポストロフィ (') は文字認識されません。
そのため、検索/置換でアポストロフィを取り除くことはできません。

セルに入力された文字列(文字+数字+文字)から数字を抜き出す方法
=MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&1234567890)),LEN(A1)*10-SUM(LEN(SUBSTITUTE(A1,{0,1,2,3,4,5,6,7,8,9},))))
セル内改行された文字列から文字を取り出す方法
改行までの文字
=LEFT(INDIRECT("A"&ROUNDUP(ROW(A1)/2,0)),FIND(CHAR(10),INDIRECT("A"&ROUNDUP(ROW(A1)/2,0)))-1)
改行からの文字
=MID(INDIRECT("A"&ROUNDUP(ROW(A1)/2,0)),FIND(CHAR(10),INDIRECT("A"&ROUNDUP(ROW(A1)/2,0)))+1,99)

セル内改行(3行)の各文字列を取り出す
=TRIM(MID(SUBSTITUTE(A$1,CHAR(10),REPT(" ",200)),200*ROW(A1)-199,200))
数式を下にコピーします。

C列の重複した値を検索してカラー表示したい
Sub myMojiSearch()
'C列で重複した文字や値セルを赤色で表示します。
'昇順で並べ替えておきます。
ScreenUpdating = False
Columns("C:C").Select '検索列指定
With Selection.Interior.Pattern = xlNone '検索前に色クリア
End With
FirstItem = ActiveCell.Value
SecondItem = ActiveCell.Offset(1, 0).Value '上と下の行比較
Offsetcount = 1
Do While ActiveCell <> ""
If FirstItem = SecondItem Then
ActiveCell.Offset(Offsetcount, 0).Interior.Color = RGB(255, 0, 0)
Offsetcount = Offsetcount + 1
SecondItem = ActiveCell.Offset(Offsetcount, 0).Value
Else
ActiveCell.Offset(Offsetcount, 0).Select
FirstItem = ActiveCell.Value
SecondItem = ActiveCell.Offset(1, 0).Value
Offsetcount = 1
End If
Loop
ScreenUpdating = True
End Sub

セルに入力できる文字数をバイト単位で制限する
入力規則の「ユーザー設定」を使います。
[数式]ボックスに「=LENB(A1)<=20」とすれば、
セルA1には半角英数字で20バイトまでしか入力できなくなります。
<参考>30文字を超えたセルの文字色を変える
「条件付き書式」
=LEN(A1)>30 と入力して書式を設定

文字数値に完全一致するセルの個数を数える
たとえばセル範囲で、00123,0123,123 から 0123 の個数は
=SUMPRODUCT((A1:A10="0123")*1)
=SUMPRODUCT((A1:A10=$B$1)*1)

<参考>関数(COUNTIF)は、「00123」と「0123」が区別されません。

ゼロより大きい最小値を求める
=SMALL(A2:A10,COUNTIF(A2:A10,"<=0")+1)
70以上の最小値の場合は
=SMALL(A2:A10,COUNTIF(A2:A10,"<70")+1)

上位3つの数値の平均を求める
=(LARGE(A1:A10,1)+LARGE(A1:A10,2)+LARGE(A1:A10,3))/3

文字列から右端の1文字を削除したい(文字列や数値がセルA1にある場合)
「東京都」の"都"や「1234」の"4"のように右端の1文字を削除するには次の数式です。
=LEFT(A1,LEN(A1)-1)
<参考>左端1文字削除ならば
=RIGHT(A1,LEN(A1)-1)

一の位が0の場合に、文字色をつける(条件付き書式で数式を設定します)
<参考>整数だけでなく、小数の場合も考慮します
=MOD(INT(A1),10)=0
=RIGHT(INT(A1))="0"
=MID(A1,FIND(".",A1&".")-1,1)*1=0


<参考>一の位が0でない場合に、文字色をつけるには(条件付き書式)
=MOD(INT(A1),10)
=RIGHT(INT(A1))<>"0"
=MID(A1,FIND(".",A1&".")-1,1)*1

ヘッダー中央にユーザー書式の日付時刻を設定 [ThisWorkbook]
Private Sub Workbook_BeforePrint(Cancel As Boolean)
'アクティブシートヘッダー中央に平成日付と時刻を設定します
ActiveSheet.PageSetup.CenterHeader = Format(Now, "ggge年 m月 d日 h:m:ss")
End Sub
ヘッダーやフッターを改行したい
ページレイアウト」タブ→「ページ設定」の「印刷タイトル」
「ヘッダー/フッター」タブをクリックし、「ヘッダーの編集」ボタンをクリック
表示したい文字列指定し [Ctrl] +「 J 」キー で改行できます。

セル条件で印刷範囲を設定する
名前を定義:Print_Area
参照範囲に以下の数式を設定します。
=IF(Sheet1!$A$1=1,Sheet1!$A$1:$A$10,Sheet1!$B$1:$B$10)

上記例は、シート1のA1セルの値が 1 ならA1:A10を印刷範囲に設定します。A1の値が 1 以外ならB1:B10を印刷範囲に設定します。
印刷コマンドを実行すると指定範囲が印刷されます。

外字エディタを使うには
XPでは、「すべてのプログラム」→「アクセサリ」の中に「外字エディタ」があります。
Windows Vista ベースのコンピュータの [スタート] メニューに外字エディタのショートカットは表示されません。
http://support.microsoft.com/kb/930134/ja
スタートボタン→ 検索ボックスに eudcedit と入力すると外字エディタが表示されます。
*****
外字を入力するときは、IME ツールバーの 「IME パッド」をクリックし、「文字一覧]」をクリックします。
「文字一覧]」ダイアログ ボックスが表示されるので、左側のリスト ボックスから「シフトJIS」 を選択します。
その中の「外字」を選択します。


TOP / FAQ1 / FAQ2 / FAQ3 /上へ

Copyright © 2012 TOMBO. All rights reserved.