如何建立两个excel工作表之间的关系

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何建立两个excel工作表之间的关系相关的知识,希望对你有一定的参考价值。

在同一个工作簿中要使某个工作表和另一个工作表关联,可以设定.如你准备在sheet1中输入而要在sheet2中也显示同样数据,可在sheet2对应的单元格中(如A3)预先输入
=sheet1!A3,
其他单元格用同样办法或用拖动鼠标来设定.
设定好后,第一张工作表输入数据或修改数据,第二张工作表会保持同步.
只要地址明确,还可以在不同文件夹之间建立这种链接.
或者,将第一个工作表中要填定数据的范围复制,然后,采用选择性粘贴.具体操作是:在第二个工作表中,选定对应部位左上角的单元格,点编辑,点选择性粘贴,点窗口中左下角的链接粘贴.然后在第一个工作表中填写或编辑数据,第二张工作表中就出现同样的数据.
参考技术A 在SHEET1的销售额列下面加一个“合计”项,等于每日销售额总和,比如这个单元格是D10。
在SHEET2的“每日总销售额”单元格里,设函数 =Sheet1!D10
SHEET2就自动提取SHEET1的总和,两个表就关联起来了。

我明白你的意思,补充说明,你可以把这个合计项,放到你那列表的最上方(也就是第一行)或最下方(也就是6万多行),放在上面的时候可以隐藏,放到下面的时候,就干脆不去管它。合计的数值可以指定为整列的数值,比如从=SUM(D5:D65534)。
这样设定,无论你一天销售多少,都不影响你求和计算。
合计的内容,包括整个
参考技术B 建立关联,只要使用=即可
如果在表1A1单元格中 输入=
然后点击表2的A1,回车
这样更新表2的数据,表1也会自动同步更新
参考技术C 同一个工作簿中要使某个工作表和另一个工作表关联,可以设定.如你准备在sheet1中输入而要在sheet2中也显示同样数据,可在sheet2对应的单元格中(如A3)预先输入
=sheet1!A3,
其他单元格用同样办法或用拖动鼠标来设定.
设定好后,第一张工作表输入数据或修改数据,第二张工作表会保持同步.
只要地址明确,还可以在不同文件夹之间建立这种链接.
或者,将第一个工作表中要填定数据的范围复制,然后,采用选择性粘贴.具体操作是:在第二个工作表中,选定对应部位左上角的单元格,点编辑,点选择性粘贴,点窗口中左下角的链接粘贴.然后在第一个工作表中填写或编辑数据,第二张工作表中就出现同样的数据.

需要为来自 R Shiny 中的 Excel 工作表的 3 个 InsertUI 字段建立依赖关系

【中文标题】需要为来自 R Shiny 中的 Excel 工作表的 3 个 InsertUI 字段建立依赖关系【英文标题】:Need to build dependency for 3 InsertUI fields coming from Excel sheet in RShiny 【发布时间】:2020-10-04 04:50:31 【问题描述】:

我对 R 还很陌生,我正在尝试构建一个小型实用程序来供我学习。

我的 Excel 工作簿中有 3 个字段,名为:

国家 状态 城市

所有这些字段都应该在 UI 中作为下拉菜单出现。

我想要实现的是:'当我为国家/地区进行选择时,应该创建一个新的国家下拉列表,其中包含属于所选国家/地区的国家列表。并根据所选的州,下拉菜单中应填充基础城市'

我在网上找到了一些示例,但它们都创建了一个带有 3 个固定下拉菜单的静态 UI。如何动态实现?

下面的代码帮助我部分实现它,例如:如果我选择一个国家作为“印度”,它会根据使用的过滤器添加另一个下拉列表,其中包含所有州的正确列表。但是,一旦州被填充,即使我更改 Country 的选定值,它们也不会改变。

有人可以帮我解决吗?

library(shiny)
library(shinydashboardPlus)
library(shinydashboard)
library(shinyjs)
library(shinyWidgets)
library(tidyverse)
library(dplyr)
library(excelR)
library(readxl)
library(readr)

a<- read.excel("cities.xlsx")

ui<- fluidPage(
               titlePanel("Country Details"),
               fluidRow(column( width = 8,
                                div( 
                    textInput("message", label = "",placeholder = "Type your message here."),
                                          actionButton("send", "Send")
                                )
               )))

Server<- function ( input, output, session)


ObsereEvent(input$send, 
insertUI(selector#message", where = "beforeBegin",
                      ui=div(class="bubble",
                                 wellPanel(
                                   p( selectInput("country", "Country", choices =c("All",unique(as.character(a$Country) )), multiple = T) )))))

)
    observeEvent(input$country,
      insertUI(selector = "#message", where = "beforeBegin",
               ui=div( div(class="bubble",
                          wellPanel(
                            p(
                              selectInput("state", "State", choices =c(unique(as.character(a$State))[a$Country==input$country])) )
                          ))))

    )

observeEvent(input$state,
      insertUI(selector = "#message", where = "beforeBegin",
               ui=div( div(class="bubble",
                          wellPanel(
                            p(
                              selectInput("city", "City", choices =c(unique(as.character(a$city))[a$Country==input$country & a$state==input$state])) )
                          ))))

    )

 
ShinyApp( ui, server)

【问题讨论】:

【参考方案1】:

在您的服务器函数中,为您的国家/地区selectInput 添加一个observeEvent 侦听器。在其中,使用updateSelectInput 重新填充您的状态selectInput。同样,为您的州selectInput 编写一个observeEvent 侦听器以更新您的城市selectInput

除非重要的是在您选择国家/地区之前不会出现州 selectInput(以及在您选择州之前不会出现城市 selectInput,否则您应该能够执行所有这些操作而无需使用insertUIrenderUI。在updateSelectInput上搜索帮助。网上有很多例子。

无法为您提供解决方案,因为您没有为我们提供一个简单、独立的问题示例。这将包括玩具输入数据、您的代码、任何错误消息和预期输出。 This post 可能会有所帮助。

【讨论】:

对不起。我现在已将代码添加到问题中。你现在能帮帮我吗?【参考方案2】:

我的查询是一样的-

我的代码在下面-

我想根据第一个选择输入(文凭)的选择过滤数据。即,如果我选择任何文凭课程,我将在 available1 选择 Input 中获取过滤后的数据。

我的代码是-

ui<- fluidPage(useShinyjs(),
               #extendShinyjs(text = "shinyjs.button = function() window.scrollTo(0, 50);"),
               tags$head(tags$link(rel="stylesheet", href="style.css")),
               titlePanel("Chatbot"),
               fluidRow(column( width = 8,
                                div(id='outDiv',

                                    panel(style = "overflow-y:scroll; max-height: 300px; position:relative; align: centre",
                                          textInput("message", label = "",placeholder = "Type your message here."),
                                          actionButton("send", "Send"), heading = "Smart Advisor", status = "primary")
                                )
               )))


server<- function(input, output, session)



  # Declaring and Initializing Global Variables
  i <- 1
  lvl <- reactiveVal()
  lvl(i)

replyMessage<- function(lvl,msg)
  
    message('Level:', lvl)
    message('Message:', msg)

    switch(lvl,

if(msg=='Diploma')
           
             insertUI(selector = "#message", where = "beforeBegin",
                      ui=div(class="chat-bubbles",
                             div(class="bubble",
                                 wellPanel(
                                   p("As per your selection you are eligible for:", tags$br(),
                                     selectInput("diploma_courses", "Disciplines", choices =c("All",unique(as.character(a1$`Discipline Category1`) )),
                                                 multiple = T)

                                   )))))

             observeEvent(input$diploma_courses,
               insertUI(selector = "#message", where = "beforeBegin",
                        ui=div(class="chat-bubbles",
                               div(class="bubble",
                                   wellPanel(
                                     p(
                                       selectInput("available1", "Specialization", choices =c(as.character(a1$Subject1)[a1$`Discipline Category1`== input$diploma_courses])) )
                                   ))))

             )

 getMessage<- function(lvl)
  
    # Observer Event for Message Box
    observeEvent(input$send,
      if(input$message == '')
      
        insertUI(
          selector = "#message",
          where = "beforeBegin",
          ui=div(class="chat-bubbles",
                 div(class="bubble",p("Kindly provide a valid input."))
          )
        )
        clearInput()
      
      else
      
        replyMessage(lvl(),input$message)
      

    )
Solution

【讨论】:

以上是关于如何建立两个excel工作表之间的关系的主要内容,如果未能解决你的问题,请参考以下文章

excel两个工作表如何关联

如何使两个Excel表中的数据相关联

需要为来自 R Shiny 中的 Excel 工作表的 3 个 InsertUI 字段建立依赖关系

Excel高手请进!谢谢!!如何解除两表之间的公式关联?

EXCEL的多个工作表如何导出单个EXCEL工作表

excel跨表格引用遇到的两个问题?