素のエクセルを開いて文字を打つ際、いきなりローマ字で入力することはできるのでしょうか。

エクセルを開いた後に「半角/全角」を押せばいいとか、「入力規則の設定を変更すればいい」とかではなく、素のエクセルを開いた時に最初からローマ字入力する方法を知りたいのです。

入力規則で入力方法を変更したファイルを開くとローマ字から始めることはできるようですが、設定変更したファイル(例えば設定変更したファイルをデスクトップに保存したものを開くといったこと)ではなく素のエクセルを開いて任意のセルにローマ字入力する方法はないのでしょうか。

質問者からの補足コメント

  • Windows 10
    Excel 2013 です。

      補足日時:2017/06/18 02:03

A 回答 (7件)

こんばんは。



>エクセルを開いた時には「タスクバー」右端のアイコンは「A」になっています。
>これを「あ」の状態で開きたいのです。

最初に、#4についてのフォローアップをさせていただきます。ご質問者さんは、試してみないうちに、自分の推測で判断されたようです。インスタンスという用語はご存知でしょうか。

インスタンスとは、鯛焼きの型(モールド)があれば、同じ形の鯛焼きがいくつもできます。同じ形に出来上がった、食べられる方の鯛焼きのことを、インスタンスといい、鯛焼き型のほうを、クラスと呼びます。#4さんのXlStartに入れたテンプレートはその元の型を意味しています。

XlStart フォルダーに入れたものは、テンプレートとして、新しく生成させるブックのインスタンスを作り、IMEがコントロールされるのであって、その都度、設定されたファイルを開けるのではありません。新規のブックに適用されます。ただし、既存のブックには適用されないのではないかと思います。

それをより具体的にしたものが、VBAで可能です。しかし最近は、こうしたコードをお教えしても、興味を示さない人が多いようです。アドインにしてしまえば、その機能だけに着目しますので、そのコード自体は気にならないはずですが、コードをみると恐れをなしてしまうかもしれません。(アドインにするためには、もう少しコードを加えなくてはなりませんが)

#4さんと同じ発想には基づいていますが、それをVBAでインスタンスを取り付けるわけです。新規ブックでも、既存のブックでも、それ自体には影響はしませんし、一切いじる必要性がありません。

参考:
[XL95]日本語入力システムのオン/オフを制御する方法
https://support.microsoft.com/ja-jp/help/407890

これを、そのまま取り付けても、
>素のエクセルを開いて任意のセルにローマ字入力する方法はないのでしょうか。
ご希望のようにはならないのです。そこで、個人用マクロブックに、クラスのインスタンスを設けるという形になります。別に個々のファイルを書き換える必要はありません。
たかが、このためにこんな長いコードが必要かと思われるでしょうが、プログラムというものはこんなものだということです。たったひとつのボタンを押す行為を、自動で行うようにするためには、こういうことも必要なのです。

'//32bit 用です。
''標準モジュール
Public myClass As New Class1
 Public Declare Function ImmGetContext Lib "imm32.dll" (ByVal hWnd As Long) _
     As Long
 Public Declare Function ImmReleaseContext Lib "imm32.dll" _
     (ByVal hWnd As Long, ByVal himc As Long) As Long
 Public Declare Function ImmSetOpenStatus Lib "imm32.dll" _
     (ByVal himc As Long, ByVal b As Long) As Long
 Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal _
     lpClassName As String, ByVal lpWindowName As String) As Long

Sub Auto_Open()
 Set myClass.App = Excel.Application
End Sub

''Class1

Public WithEvents App As Application

Private Sub App_NewWorkbook(ByVal Wb As Workbook)
 ImeActivate
End Sub

Private Sub App_SheetActivate(ByVal Sh As Object)
ImeActivate
End Sub

Private Sub App_WindowActivate(ByVal Wb As Workbook, ByVal Wn As Window)
ImeActivate
End Sub

Private Sub App_WindowDeactivate(ByVal Wb As Workbook, ByVal Wn As Window)
 ImeActivate
End Sub

Private Sub App_WorkbookActivate(ByVal Wb As Workbook)
ImeActivate
End Sub

Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
  With ActiveSheet  '入力セルを認識させる
   On Error Resume Next
    ActiveCell.Activate
    ActiveCell.Select
   On Error GoTo 0
  End With
  ImeActivate
End Sub

'必要に応じてイベントマクロを増やします。

Function IMEControl(ByVal nMode As Long)
   Dim ClassName As String, WindowName As String
   Dim hWnd As Long, IMC As Long, ret As Long
   ClassName = "XLMAIN"
   'WindowName = Application.Caption '不要
   hWnd = FindWindow(ClassName, vbNullChar)
   IMC = ImmGetContext(hWnd)
   ret = ImmSetOpenStatus(IMC, nMode)
   ret = ImmReleaseContext(hWnd, IMC)
End Function
Sub ImeActivate()
If VBA.IMEStatus = vbIMEModeOff Then
   Call IMEControl(1)
End If
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。

>ご質問者さんは、試してみないうちに、自分の推測で判断されたようです。
XlStartフォルダに入れる件のことでしたら、教えて頂いた時に試しています。
入力規則を変更したものをXlStartフォルダに入れたのですが、なぜか開いた時に変化はありませんでした。
(このファイルを選んで開かなければいけない状態)

その後、以下のことを試して動作するようになりました。
XlStartフォルダに保存したファイルに文字を入れて一旦保存 → 再度開いて文字を消して保存 
エクセルを開き直すとローマ字入力できるシートが開くことができました。

ただ、文字を入力して上書き保存すると、次回開いた時に新規のシートではなく、文字が残ったままのものが開かれます。
設定されたファイルを上書き保存して、それを開くのと同じ気がしました。

ボタン一つの裏側には長いコードが必要なんですね。

コードをVBに貼り付けてエクセルを立ち上げました。
やはり、上書き保存されてしまいますが、やりたいことはかなり近いです!

お礼日時:2017/06/19 01:29

>やはり、上書き保存になってしまうようです。


おっしゃっている質問要項は、完全に可能だということは申しておきます。

ここら辺は、一応、VBAとしての上級レベルに該当しますから、クラス-インスタンスの仕組み自体を理解しないと、よく分からないかもしれません。アドインを提供という手もないのではないのですが、この手のアドインは、今の私の故障しているPCでは、少し荷が重すぎます。いつ、アクセスが不能になるか、あぶない状態です。

個人用マクロブック自体は、お分かりになっているようではあっても、上書き保存が、何を対象にしているかすら、こちらでは正直なところ、不明なのです。

新規ブックに対して、何かの変更を加えれば、「上書き」というよりも、「名前をつけて保存する」ことを求められますし、「個人用マクロブック」自体も、書き加えれば、一度は、保存を求められるのは当然ではありますが、それ一度だけです。一旦、「個人用マクロブック」を保存して、再起動していただくか、もしくは、Auto_Open を一度実行していただくようにするわけです。

PERSONAL.XLSB 等のプロジェクトエクスプローラー(特殊な内容ですので、詳しい説明は省略します)の画像をつけておきます。なお、Book1側は、似たような内容ですが、これは、別のマクロです。PERSONAL.XLSB は、もちろん、XlStart フォルダー(C:\Users\[My ID]\AppData\Roaming\Microsoft\Excel\XLSTART\ の場所にあるファイルのことです。
「エクセルを開いて文字を打つ際、いきなりロ」の回答画像7
    • good
    • 0
この回答へのお礼

出来ないモヤモヤ感はありますが、ハードルは高いようです。
今回の質問と同じようなことをしたいと思ってる方がいるかもしれません。
コードが書いてあるところにスタンプを押しておきます。

お礼日時:2017/06/19 18:16

フィードバックしていただきありがとうございます。


一般的には、私のような書き込みは、無視されるのを承知で書いています。

XlStart のフォルダの中に入れて、Excelを再起動した時に、初めて、機能が働き、インスタンスが生成されるという仕組みです。それは、私が書いたコードでも同じなのですが、「個人用マクロブック」(Personal.xlsb)に組み込むということをして、見えないマクロを、立ち上げるブックに機能を付け足すという役目をさせる、というような機能なのです。

>上書き保存されてしまいますが、
今、お使いになるブックや新規のブックには、機能が働いた(IME ON)だけで、そこには何も残らないはずです。したがって、マクロつきのブックとかは、一切関係がなく、上書きということにはならないはずです。

構造的には以下のようになります。
[ウィンドウの選択]ボタンを押しますと、
---------------------------
新規ブック.XLSX
既存のブック.XLSX
---------------------------
PERSONAL.XLSB(非表示)--ここにマクロが搭載され、上記のブック全体に及ぼす
===============

IMEを起動させる方法には、COMアドインの、xll(拡張子) やExcel-DNAでの便利な方法が隠されているとは思うのですが、今のところ、私の技術は不勉強なもので、コードを提示できる古い手段に頼ってしまいます。

ちなみに、こうした基本機能を改変する技術というのは、ほとんど、どの機能でも、難易度が非常に高いのです。あえて、私の今回のコードをおすすめするつもりはありませんが、もう少し検証してみたらいかがかと思います。言葉の反応から、何か誤解が潜んでいるような気がします。
    • good
    • 0
この回答へのお礼

やはり、上書き保存になってしまうようです。
いろいろ教えて頂き、ありがとうございます。

お礼日時:2017/06/19 13:26

次の手順をお試しあれ。


1.新規ブックを開く
2.全選択ボタン(列記号Aの左側、かつ、行番号1の上側の四角い部分)をチョーン
3.[データ]→[データツール <データの入力規則>]
4.[日本語入力]タブ画面において、"コントロールなし"→"ひらがな"に変更
5.[OK]をパシーッ
6.上の操作を全シートで実施したブックをテンプレートとして保存
7.Excel 起動時に当該テンプレートを開かせる

Excel 2002 使用して頃は、テンプレートを XLStartフォルダに置いておけば、上記のステップ7が動作したものだが、Excel 2013 では試したことがないし、試すつもりもない。興味ないから。XLStartフォルダの存在可否も知らない。
「エクセルを開いて文字を打つ際、いきなりロ」の回答画像4
    • good
    • 0
この回答へのお礼

ありがとうございます。
入力規則を変更したものを保存して開けばできるようですね。

質問の本文にも書いていますが、

”エクセルを開いた後に「半角/全角」を押せばいいとか、「入力規則の設定を変更すればいい」とかではなく、素のエクセルを開いた時に最初からローマ字入力する方法を知りたいのです。”
”入力規則で入力方法を変更したファイルを開くとローマ字から始めることはできるようですが、設定変更したファイル(例えば設定変更したファイルをデスクトップに保存したものを開くといったこと)ではなく素のエクセルを開いて任意のセルにローマ字入力する方法はないのでしょうか。”

お礼日時:2017/06/18 12:40

貴方の「ローマ字入力」の意味は所謂「直接入力」のことですか?


此処で言う「直接入力」とは、日本語に変換しない半角英数記号を入力することです。
ひょっとして"全角"文字の「ローマ字入力」のことかも知れないので、確認しています。

私も同じ環境だけど、Excel に限らず、メモ帳等も、新規にそれらを開いた時点では"半角"文字の「ローマ字入力」モードになっています。
もしそれで良ければ、
[タスクバー]右端の[あ]([A]かも)アイコン(添付図参照)をマウスで右クリックして、
[プロパティ]→[詳細設定]→[全般]の画面における各設定が何と表示されているかをお知らせください。私のものと比較して、何が異なるかを見ますから。
「エクセルを開いて文字を打つ際、いきなりロ」の回答画像3
    • good
    • 0
この回答へのお礼

エクセルを開いた時には「タスクバー」右端のアイコンは「A」になっています。
これを「あ」の状態で開きたいのです。

「タスクバー」右端のアイコン「A」を右クリックすると「半角英数」にチェックが入っていますが、「ひらがな」にチェックが入った状態でエクセルを始めたいということです。

例 キーボードで「o」と打ったときに「お」と表示させる

”[プロパティ]→[詳細設定]→[全般]の画面における各設定が何と表示されているかをお知らせください。” → 入力設定の欄は「ローマ字入力」となっています。

お礼日時:2017/06/18 11:34

excelのバージョン、windowsのバージョンが不明ですが、


下記のURLは参考になりませんでしょうか。
http://inakamura.main.jp/main/archives/1204#Exce …


https://answers.microsoft.com/ja-jp/windows/foru …
    • good
    • 0
この回答へのお礼

参考URLありがとうございます。やってみましたが、改善しませんでした。

お礼日時:2017/06/18 11:00

エクセルは文書ファイルではないので、無理です

    • good
    • 0
この回答へのお礼

エクセルでは無理なのですね。ありがとうございます。

お礼日時:2017/06/18 11:00

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

このQ&Aを見た人はこんなQ&Aも見ています

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

Qセルを選択解除

Excel2016 Windows10です。
セルを選択してコピーし、他のセルに張り付けた後もコピー元のセルが選択解除されません。
解除する方法を教えて下さい。

Aベストアンサー

No.2の回答者です。

> カーソル表示の状態にすると解除されますが
どのような作業手順なのか判断できませんが、本当に解除されたの?

>次のセルに移動すると元の選択状態に戻ってしまいます。
解除後に元の選択状態になることはないと思います。
解除されていないのに気付いていないだけでは?

リボンにある[ホーム]タブの[クリップボード]グループにある[貼り付け]が
有効な状態なら、コピー状態は解除はされていません。
Excelは、[コピー]が有効な状態の場合[貼り付け]も常に有効です。
コピー状態が解除されるとクリップボードに残らず貼り付けできません。

セルをダブルクリックして編集する状態にするというのは、[ F2 ]キーを
押した状態と同じで、セルに直接テキストなどを入力する状態です。
この状態だと、コピー元のセルの選択状態から[ F2 ]キーにて別セルを
アクティブな状態にするということなので、コピー状態は解除されます。
リボン上の別コマンドをクリックするということも、[コピー]のコマンド
から別のコマンドに切り替えたことと同じなので解除されるのです。

> これまで貼り付けると自動で解除されたように思ったのですが?
貼り付けるだけで解除される仕様だと、コピーしたセル内容を連続した
貼り付けする作業ができませんよね。別々のセルに貼り付けたいのに
コピー元に戻ってコピーを繰り返すなど作業効率としても無駄です。
ですから、コピーの選択状態は解除されずに貼り付けが有効な状態が
続けられる仕様なのです。

もしかしたら、[切り取り]→[貼り付け]と勘違いをしているのでは?

この場合だと、コピー元には何もないので解除されますし、切り取った
内容は貼り付けた段階でクリップボードから消えます。
別のソフトやアプリなどに貼り付けた場合は、選択状態が解除されずに
コピーしたときと同じ選択状態が続きますが、Excel内のどこかのセルに
貼り付けた段階でクリップボードからも消えます。

No.2の回答者です。

> カーソル表示の状態にすると解除されますが
どのような作業手順なのか判断できませんが、本当に解除されたの?

>次のセルに移動すると元の選択状態に戻ってしまいます。
解除後に元の選択状態になることはないと思います。
解除されていないのに気付いていないだけでは?

リボンにある[ホーム]タブの[クリップボード]グループにある[貼り付け]が
有効な状態なら、コピー状態は解除はされていません。
Excelは、[コピー]が有効な状態の場合[貼り付け]も常に有効です。
コピー状態が解除さ...続きを読む

Qoffice エクセルで年齢

下記のようにA列に生年月日を入力するとB列に年齢を出す方法を教えて下さい。
年齢の表示は()の中に○○才となるようにです。

A・・・・・・・・・B
1 1980年2月6日 (37才)
2 1981年11月9日 (35才)
3 1964年5月7日 (53才)
4 1972年5月5日 (45才)

よろしくお願い致します。

Aベストアンサー

B1へ
="("&DATEDIF(A1,TODAY(),"Y")&"才)"
と入力し、オートフィルで下へコピー

Qエクセルの式がわかりません、教えてください。

fujillinさん解り易くしました。

報告書を作成する際、入力内容から、A(業務報酬)
とB(預り金)を選ばせようとしていますが、うまく表示されません。どこがいけないのでしょうか?

パターンは4つありますが、
もし、$AP$7="×" ×で(請求書が弊社宛ではなくて)
NOT('!$AL$7="")文字式が空欄じゃなかったら(下請会社名の記載が有ったら)
B =$V$18(預り金)

もし、$AP$7="×" ×で(請求書が弊社宛ではなくて)
NOT('!$AL$7="")文字式が空欄じゃなかったら(下請会社名の記載が無かったら)
この事例はあり得ませんので削除

もし、$AP$7="○" ○で(請求書が弊社宛)
('!$AL$7="")文字式が空欄だったら(下請会社名の記載が無かったら)
A =$V$19(業務報酬)金額的には100%
もし、$AP$7="○" ○で(請求書が弊社宛)
NOT('!$AL$7="")文字式が空欄じゃなかったら(下請会社名の記載が有ったら)
A =$V$19(業務報酬)金額的には50%

を選ばせようとしています。

疑問点の $AT$7=(支払金額)は上記の式に関係ないものとして削除しました。

以下の文書では、もし、$AP$7="×"(請求書が弊社宛ではなくて)で $AT$7=""(支払金額の記載が無かったら)A=$V$19(業務報酬)

もし、$AP$7="○"(請求書が弊社宛で)、,NOT($AL$7==""(下請会社名の記載が有ったら)、A=$V$19(業務報酬)
そうでなければ、B=$V$18(預り金)

=IF(AND($AP$7="×",$AT$7=””),$V$19,IF(OR($AP$7="○",NOT($AL$7="")),'$V$19,$V$18))

改善策1として
=IF($AP$7="×",$V$18,$V$19)を入れてみましたが、
もし請求書が弊社宛では無ければ、預り金、そうでなければ業務報酬

もし、$AP$7="○" ○で(請求書が弊社宛)
($AL$7="")文字式が空欄だったら(下請会社名の記載が無かったら)
A =$V$19(業務報酬)
がうまくいきません。


改善策2として
=IF(OR($AP$7="○",NOT($AL$7="")),$V$18,$V$19)で作成しましたが、間違っていました。
(請求書が弊社宛)または(下請会社名の記載が有ったら)、業務報酬、そうでなければ預り金


パターン例
請求書が弊社宛 請求書が弊社宛じゃない
下請会社有 業務報酬 預り金
下請会社無 業務報酬 -

fujillinさん解り易くしました。

報告書を作成する際、入力内容から、A(業務報酬)
とB(預り金)を選ばせようとしていますが、うまく表示されません。どこがいけないのでしょうか?

パターンは4つありますが、
もし、$AP$7="×" ×で(請求書が弊社宛ではなくて)
NOT('!$AL$7="")文字式が空欄じゃなかったら(下請会社名の記載が有ったら)
B =$V$18(預り金)

もし、$AP$7="×" ×で(請求書が弊社宛ではなくて)
NOT('!$AL$7="")文字式が空欄じゃなかったら(下請会社名の記載が無かった...続きを読む

Aベストアンサー

またしても添付画像が判別できないですけど。
細かく書いても表示される画像は縮小されてしまうので、
それでもわかるように工夫(画像をトリミング;必要な部分以外は切り捨てる)する必要があります。
その方法は質問に関係ないので省きます。

画像のものを憶測で簡略化したものを添付します。
これで式を考えてみます。

私が回答投稿して良い空気なのかわからないけど…

■APが「○」の場合
ALやAYの内容がどうであれ、結果は全て「業務報酬」になります。

これを、IF関数を使って表すと以下のようになります。

=IF(AP="○","業務報酬",【AP="×"の場合の処理】)   …【式1】

これで、条件①~④の場合の処理は完了。

■APが「×」の場合
結果が「業務報酬」と「預り金」のどちらかになります。
どの条件で結果が分岐するのか、見てみると・・・

AYに金額の記入があるか、無い(空欄)かで違います。

これを、IF関数を使って表すと以下のようになります。

=IF(AY<>"","業務報酬","預り金")   …【式2】

これで、条件⑤~⑧の場合の処理は完了。

■合体!

(式1)と(式2)を合体させると、条件①~⑧全てを処理できる式になります。
ではやってみましょう。

=IF(AP="○","業務報酬",【AP="×"の場合の処理】)
   ↓
=IF(AP="○","業務報酬",【式2】)
   ↓
=IF(AP="○","業務報酬",IF(AY<>"","業務報酬","預り金"))   …完成!

※もちろん、「AP」「AY」だけだとセルになっていないので、行番号も加えて下さい。


■疑問
あくまで、私が画像から読み取った条件で考えたのですが

AL(業者名の有無)については、結果表示させるにあたり、条件として不要だと思います。

条件④と条件①の違いは?(画像で判別不可)

条件④と条件⑧は無いパターンとのことでしたので、
データミスでも存在しえないないものと解釈しまして、
敢えてそのようなケースが合った場合のエラー処理などは含めていません。

---------------------
★別解
添付した表を前提条件としての別解を。

条件がいくつもあっても、結果が「預り金」となるパターンは条件⑦、ただ1つのみ。

そこだけをIFで判別します。

=IF(AND(AP="×",AY=""),"預り金","業務報酬")

こんなにシンプルになります。
※もちろん、「AP」「AY」だけだとセルになっていないので、行番号も加えて下さい。

またしても添付画像が判別できないですけど。
細かく書いても表示される画像は縮小されてしまうので、
それでもわかるように工夫(画像をトリミング;必要な部分以外は切り捨てる)する必要があります。
その方法は質問に関係ないので省きます。

画像のものを憶測で簡略化したものを添付します。
これで式を考えてみます。

私が回答投稿して良い空気なのかわからないけど…

■APが「○」の場合
ALやAYの内容がどうであれ、結果は全て「業務報酬」になります。

これを、IF関数を使って表すと以下のようになります...続きを読む

Qエクセル 関数 教えてください!

添付画像のようにしたいのですが、エクセルでそんなことが出来るのか分かりません。
賢者の皆様、知恵をお貸しください。

詳細はこんな感じです。

①②③は条件付書式ということはなんとなく分かります!
僕なりに一生懸命悩んでしましたが、浅知恵のためお手上げ状態です。。

①=予想と結果が1番で一致したときに、予想列の該当セルを黄色に塗りつぶす
②=予想と結果が2番で一致したときに、予想列の該当セルを赤色に塗りつぶす
③=予想と結果が3番で一致したときに、予想列の該当セルを緑色に塗りつぶす
④=予想A、予想B合計の統計点数を出す(1番予想が3点、2番予想は2点、3番予想は1点)
⑤=④を数字の大きいもの順に抽出する(同じ値は表示順で抽出)
⑥=1番予想が予想通りになった確率を求める
⑦=2番予想が予想通りになった確率を求める
⑧=3番予想が予想通りになった確率を求める

よろしくお願いいたします!!!!!!

Aベストアンサー

こんばんは!

①~③は大丈夫というコトなので・・・

④~⑤についてだけ
まず④は
↓の画像のように作業用の表を作成するのが簡単だと思います。
「作業表1」は1番~3番の「得点?」の表を作成しておきます。
K2セルに
=IF(B9="",0,VLOOKUP(B9,$O$2:$P$4,2,0))+IF(F9="",0,VLOOKUP(F9,$O$2:$P$4,2,0))

という数式を入れ列・行方向にフィルハンドルでコピー!

⑤について
「作業表2」のO11セルに
=COUNTIF(K$2:K$8,">"&K2)+COUNTIF(K$2:K2,K2)

という数式を入れフィルハンドルで右へ3列分・下へ7行コピーしておきます。
そしてK11セルに
=INDEX($J$2:$J$8,MATCH(ROW(A1),O$11:O$17,0))

という数式を入れ列・行方向にフィル&コピー!
これで画像のような感じになります。

※ 作業用の表が目障りであれば遠く離れた列にするか
非表示にしておいてください。

⑥~⑧については
0%か100%のどちらかになってしまいますよね?
それでも良いのであれば・・・
B17セル(%表示にしておく)に
=(VLOOKUP($A17,$A$3:$D$5,COLUMN(),0)=INDEX($A$9:$A$15,MATCH($A17,B$9:B$15,0)))*1

という数式を入れフィルハンドルで列・行方向にコピー!

B17セルを選択 → B17セルの四辺にマウスポインタを移動させ上下左右の小さな矢印になったところで
Ctrlキーを押しながらF17セルまでドラッグ&ドロップ
数式内の「COLUMN関数」だけに手を加え
=(VLOOKUP($A17,$A$3:$D$5,COLUMN(B1),0)=INDEX($A$9:$A$15,MATCH($A17,F$9:F$15,0)))*1

という数式にして、これも列・行方向にフィル&コピー!

こんな感じではどうでしょうか?m(_ _)m

こんばんは!

①~③は大丈夫というコトなので・・・

④~⑤についてだけ
まず④は
↓の画像のように作業用の表を作成するのが簡単だと思います。
「作業表1」は1番~3番の「得点?」の表を作成しておきます。
K2セルに
=IF(B9="",0,VLOOKUP(B9,$O$2:$P$4,2,0))+IF(F9="",0,VLOOKUP(F9,$O$2:$P$4,2,0))

という数式を入れ列・行方向にフィルハンドルでコピー!

⑤について
「作業表2」のO11セルに
=COUNTIF(K$2:K$8,">"&K2)+COUNTIF(K$2:K2,K2)

という数式を入れフィルハンドルで右へ3列分・下へ7行コピーしておきま...続きを読む

Qエクセルで縦列に祭日を入れたい

C10~AG10までに祭日名を入れたいです。
"シート名祭日""にはA1~B73まで、すでに祭日データーは入力してあります。
どなたか関数を教えてください。

できれば土日祝日の列に塗りつぶしをつけたいですが
できなくても結構です。
よろしくお願いいたします。

Aベストアンサー

C9: =IFERROR(VLOOKUP(C4,Nholidays,2,FALSE),"")
書式: 配置方向を縦
このセルをズズーッと右方に(列AG まで)オートフィル

【お断り】
0.シート「祭日」の列Aに年月日、列Bに該当する祭日名を入力して、
 ̄ ̄列A、Bのデータ範囲に「Nholidays」という名前を付けています。
1.書式 G/標準"年" に設定したセル B2 に数値 2017 を入力
2.書式を G/標準"月" に設定したセル C2 に数値 7 を入力
3.書式を d に設定し、かつ、式 =DATE($B2,$C2,COLUMN(A1)) を
 ̄ ̄入力したセル C4 をズズーッと右方に(列AG まで)オートフィル
4.書式を aaa に設定し、かつ、式 =C4 を入力したセル C5 をズズーッ
 ̄ ̄と右方に(列AG まで)オートフィル

Qコピー&ペーストではなく数式やエクセルの機能を使ってデータを反映させたい。

下記の「表①」のエクセルデータを、「表②」に反映させたいです。
「表②」のB3セルに、数式を入れて、「表①」のログイン・ログオフ時刻を「表②」へ
自動反映させたいのですが、どのような式を入れたらいいかがわかりません。

現状は、目視とコピー&ペーストで表①→表②へ貼りつけていますが、
スタッフの数が多いのとシフト勤務で出勤日数も時間もバラバラで、作業が大変です。

また、早くて正確なら他の方法でもいいです。
よろしくお願いします。


表①
A B C D E
1 氏名 日付 ログイン 日付 ログオフ
2 田中 舞子 2017/5/16 8:21:35 2017/5/16 17:34:38
3 田中 舞子 2017/5/17 8:22:40 2017/5/17 17:35:00
4 田中 舞子 2017/5/18 8:28:02 2017/5/18 17:35:55
5 田中 舞子 2017/5/19 8:22:09 2017/5/19 17:34:18
6 田中 舞子 2017/5/22 8:18:03 2017/5/22 17:33:13
7 三田 建造 2017/5/23 8:19:55 2017/5/23 17:39:44
8 三田 建造 2017/5/25 8:21:03 2017/5/25 17:38:04
9 三田 建造 2017/5/26 8:17:45 2017/5/26 17:31:54
10 三田 建造 2017/5/29 8:19:42 2017/5/29 17:32:39
11 三田 建造 2017/5/30 8:20:12 2017/5/30 17:33:26
12 牧 重三 2017/5/31 16:18:33 2017/5/31 23:31:36
13 牧 重三 2017/6/1 16:20:08 2017/6/1 23:35:33
14 牧 重三 2017/6/2 17:18:35 2017/6/2 23:41:05
15 牧 重三 2017/6/5 15:20:00 2017/6/5 23:31:54
16 牧 重三 2017/6/6 19:22:05 2017/6/6 23:41:14
17 長岐 知美 2017/6/7 8:25:48 2017/6/7 17:34:38
18 長岐 知美 2017/6/8 8:26:24 2017/6/8 17:36:52
19 長岐 知美 2017/6/9 8:26:01 2017/6/9 17:34:08
20 長岐 知美 2017/6/12 8:19:24 2017/6/12 17:32:02
21 篠田 亜紀 2017/5/21 8:19:14 2017/5/21 17:32:29
22 柿田 輝未 2017/5/28 7:34:55 2017/5/28 17:17:54
23 荒元 耕平 2017/6/4 7:32:49 2017/6/4 17:32:50
24 佐田 容子 2017/6/11 8:18:35 2017/6/11 17:41:05
25 藤島 澄人 2017/6/12 8:25:15 2017/6/12 17:59:55
26 藤島 澄人 2017/6/13 8:45:31 2017/6/13 17:41:06
27 藤島 澄人 2017/6/14 8:05:34 2017/6/14 17:28:14
28 藤島 澄人 2017/6/15 8:13:25 2017/6/15 17:30:24


表②
   A B C D E F G
1 田中 舞子 三田 建造 牧 重三 ・・・・
2 日付 ログイン ログオフ ログイン ログオフ ログイン ログオフ
3 2017/5/16 B3
4 2017/5/17
5 2017/5/18
6 2017/5/19
7 2017/5/20
8 2017/5/21
9 2017/5/22
10 2017/5/23
11 2017/5/24
12 2017/5/25
13 2017/5/26
14 2017/5/27
15 2017/5/28
16 2017/5/29
17 2017/5/30
18 2017/5/31
19 2017/6/1
20 2017/6/2
21 2017/6/3
22 2017/6/4
23 2017/6/5
24 2017/6/6
25 2017/6/7
26 2017/6/8
27 2017/6/9
28 2017/6/10
29 2017/6/11
30 2017/6/12
31 2017/6/13
32 2017/6/14
33 2017/6/15

下記の「表①」のエクセルデータを、「表②」に反映させたいです。
「表②」のB3セルに、数式を入れて、「表①」のログイン・ログオフ時刻を「表②」へ
自動反映させたいのですが、どのような式を入れたらいいかがわかりません。

現状は、目視とコピー&ペーストで表①→表②へ貼りつけていますが、
スタッフの数が多いのとシフト勤務で出勤日数も時間もバラバラで、作業が大変です。

また、早くて正確なら他の方法でもいいです。
よろしくお願いします。


表①
A B ...続きを読む

Aベストアンサー

表①のB列ですが、シリアル値「2017/5/16 8:21:35」を表示形式で「2017/5/16」と表示していませんか?もしそうであればNGです。B2セルは時刻の部分をゼロにしてください。

2人ログオンする日がある件ですが、残念ながら、この方式では実現できません。
No.1 chonamiさんの案が一番簡単そうです。たぶん、こんな感じを想定していると思われます。

【B3セル】=SUMIFS(表①!$C:$C,表①!$A:$A,B$1,表①!$B:$B,$A3)
※C3セルは、上記を参考にご自分で考えてみて下さい。

Qエクセルの、マクロとは何ですか?

エクセルの、マクロとは何ですか?

Aベストアンサー

エクセルの裏に貼り付けてあるVBと言うプログラムです。
ここにコードィングすれば、そのエクセルを開いて使う事が出来ます。
使う:プログラムを実行できる。

下は例です。
Sheet1のA列をSheet2のA列へ1個置きに転送する

Sub WK()
Dim CNT As Long
Dim END1 As Long
Dim Sh1 As Worksheet
Dim Sh2 As Worksheet

Set Sh1 = Worksheets("Sheet1")
Set Sh2 = Worksheets("Sheet2")
END1 = Sh1.Range("B65536").End(xlUp).Row

For CNT = 2 To END1 STEP 2
Sh2.Range("A" & CNT).Value = Sh1.Range("A" & CNT1).Value
Next CNT
E1:
Application.StatusBar = False
End Sub

エクセルの裏に貼り付けてあるVBと言うプログラムです。
ここにコードィングすれば、そのエクセルを開いて使う事が出来ます。
使う:プログラムを実行できる。

下は例です。
Sheet1のA列をSheet2のA列へ1個置きに転送する

Sub WK()
Dim CNT As Long
Dim END1 As Long
Dim Sh1 As Worksheet
Dim Sh2 As Worksheet

Set Sh1 = Worksheets("Sheet1")
Set Sh2 = Worksheets("Sheet2")
END1 = Sh1.Range("B65536").End(xlUp).Row

For CNT = 2 To END1 STEP 2
Sh2...続きを読む

QExcel 2段組み

縦長の表を2段組みとしたいのですが、下記の条件があります。
Excelで作成することは可能でしょうか。
可能でしたら方法を教えていただけないでしょうか。
よろしくお願いいたします。

①縦長の表を2段組みとしたい。
②表内で並び替えが可能としたい。
③2段組み内の1段の行を削除した場合に空きが出た1段部分に
2段部分のデータが自動で繰り上がるようにしたい。
(例えば2017年1月を削除した場合に2017年8月が自動で繰り上がるようにしたい。)



子供が小さいのでご連絡が遅くなる可能性がありますが、ご回答いただけた方には必ずお返事を致します。
よろしくお願いいたします。

Aベストアンサー

こんばんは!

① は画像のような配置ではなく、最初はA~F列だけにデータが羅列してある。
というコトですよね?
それをA~F列は7か月分だけにし、残りはG~L列に移動させたい!という解釈です。

② の「表内での並び替え」とはどの列がキーになるかが判りません。
これに関しては手作業で範囲指定 → 並び替え というコトが可能だと思いますので、今回はスルーします。

③ は仮にA~F列の1か月分(複数ヶ月でも)データを消去した場合にA~F列は上詰め、
G~L列は上詰めした月数分を繰り上げてA~F列に移動させる!という解釈です。

VBAになりますが一例です。
↓のSample① が「①」、Sample③ が「③」のコードになります。

Dim i As Long, cnt As Long
Dim lastRow1 As Long, lastRow2 As Long
Dim myRng1 As Range, myRng2 As Range
Sub Sample①()
If WorksheetFunction.CountIf(Range("A:A"), "小計") > 7 Then
Range("A1").Resize(, 6).Copy Range("G1")
lastRow1 = Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To lastRow1
If Cells(i, "A") = "小計" Then
cnt = cnt + 1
If cnt = 7 Then Exit For
End If
Next i
Range(Cells(i + 1, "A"), Cells(lastRow1, "F")).Cut Cells(Rows.Count, "G").End(xlUp).Offset(1)
lastRow1 = 0
cnt = 0
End If
End Sub

Sub Sample③()
If WorksheetFunction.CountIf(Range("A:A"), "小計") < 7 Then
lastRow1 = Cells(Rows.Count, "A").End(xlUp).Row
lastRow2 = Cells(Rows.Count, "G").End(xlUp).Row
For i = 2 To lastRow2
If Cells(i, "G") = "小計" Then
cnt = cnt + 1
If cnt = 7 - WorksheetFunction.CountIf(Range("A:A"), "小計") Then Exit For
End If
Next i
Range(Cells(2, "G"), Cells(i, "L")).Cut Cells(lastRow1 + 1, "A")
Set myRng1 = Range(Cells(2, "A"), Cells(lastRow1, "A")).SpecialCells(xlCellTypeBlanks)
Set myRng2 = Range(Cells(2, "G"), Cells(lastRow2, "G")).SpecialCells(xlCellTypeBlanks)
myRng1.Resize(, 6).Delete shift:=xlUp
myRng2.Resize(, 6).Delete shift:=xlUp
lastRow1 = 0
lastRow2 = 0
cnt = 0
End If
End Sub

※ 「小計」までが各月の最終行と見なしています。
すなわち「小計」の数で行数を決めています。m(_ _)m

こんばんは!

① は画像のような配置ではなく、最初はA~F列だけにデータが羅列してある。
というコトですよね?
それをA~F列は7か月分だけにし、残りはG~L列に移動させたい!という解釈です。

② の「表内での並び替え」とはどの列がキーになるかが判りません。
これに関しては手作業で範囲指定 → 並び替え というコトが可能だと思いますので、今回はスルーします。

③ は仮にA~F列の1か月分(複数ヶ月でも)データを消去した場合にA~F列は上詰め、
G~L列は上詰めした月数分を繰り上げてA~F列に移動...続きを読む

Q年月日の分離

年月日の分離
Excelで、2016/1/20 を年月日に分けて表示したく、
2016、1、20と表示させることできました。
しかし、データそのものは3つとも、2016/1/20のままです。
データを3つに分ける方法ありませんか。
値複写では、2016/1/20のままです。
left、mid、right関数は思いつきました。
しかし、これでは1桁、2桁ある月日の「場合分け」がありそうで面倒です。
確定申告の医療費の集計で、全件不可の通知があり、この問題と解釈しました。
なお、環境はWin10、Excel2013です。

Aベストアンサー

year,month,day,それぞれに関数をつけてググれば
いっぱい出ます。

Qexcel 2013

c1のセルが1から99までの数字のときはa1のセルの文字は黒色で、100から299までのときは青色で表示し300から無限は緑色で表示したいのですが、教えてください。

Aベストアンサー

こんばんは!

1~99の場合はあえて設定する必要はなく
A1セルに条件付き書式を2つだけ設定すれば良いと思います。

A1を選択 → 条件付き書式 → 新しいルール → 数式を使用して・・・ → 数式欄に
=AND(ISNUMBER(C1),C1>=300)
という数式を入れ → 書式 → フォント色の「緑」を選択しOK

同様に A1セルの条件付き書式 → ・・・中略・・・ → 数式欄に
=AND(C1>=100,C1<300)
という数式を入れ → 書式 → フォント色の「青」を選択しOK

これで大丈夫だと思います。m(_ _)m


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング